【问题标题】:How does one use a WPF/SL Grid and GridSplitter as a bindable SplitContainer?如何使用 WPF/SL Grid 和 GridSplitter 作为可绑定的 SplitContainer?
【发布时间】:2011-11-23 06:44:48
【问题描述】:

假设您希望允许用户重新调整包含两列的 WPF/SL 网格的大小。但是您还希望允许用户隐藏一列(“面板”)或另一列。当显示两个列(面板)时,还应显示 GridSplitter;否则不是。您还想使用没有代码隐藏的 MVVM 样式绑定。也许您想在会话之间保留设置。您的视图模型中有这些属性:

bool IsPanelOneVisible

布尔 IsPanelTwoVisible

GridLength 分割位置

那么我怎样才能只使用绑定来连接它呢?

请注意,当用户拖动 GridSplitter 时,网格列的宽度(通过绑定或自动设置)会被覆盖。

我阅读过的所有帖子(其中还包括几个 SplitContainer 实现)都没有正面解决这种情况。可以使用代码隐藏(响应事件)或视图模型上的其他属性来连接它。但我希望有一个更优雅的解决方案。

有什么想法吗?谢谢!

【问题讨论】:

    标签: wpf silverlight gridsplitter splitcontainer


    【解决方案1】:

    我们遇到了同样的问题,而且绑定解决方案非常混乱,我们需要创建一个用户控件来完成上述所有操作(拆分和切换窗格的开/关)。

    问题在于第一列的大小从像素大小(可通过拆分器调整大小)变为自动大小并再次变回。拆分器的可见性也可能会根据您希望它的功能而改变。

    一旦你创建了一个用户控件来做很多事情,你将不再担心内部的 MVVM(代码隐藏对用户控件来说不是坏事,只是在应用程序级别)并且只担心暴露 MVVM 友好属性,例如 IsPanelOneVisible 等。

    【讨论】:

      猜你喜欢
      • 2013-12-06
      • 2011-07-12
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2011-10-23
      • 2013-07-17
      • 1970-01-01
      • 2011-01-20
      相关资源
      最近更新 更多