2

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

布尔 IsPanelOneVisible

布尔 IsPanelTwoVisible

GridLength 拆分位置

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

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

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

有任何想法吗?谢谢!

4

1 回答 1

1

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

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

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

于 2011-09-23T08:35:21.690 回答