我在我的WPF项目中使用了众所周知的对接库AvalonDock 2.0。该库支持MVVM,这就是我想要做的。示例MVVM测试应用程序可在GitHub上获得。我下载了样品,并扩展它来显示我需要的布局,这大致是这样的:AvalonDock:多个工具窗口布局
---------------------------
| | |
| | T1 |
| |----|
| Docs | |
| | T2 |
| |----|
| | |
| | T3 |
---------------------------
正如你所看到的,我有一个主文件区和具有3和LayoutAnchorable
S中的一个工具区停靠在右侧并垂直堆放。使用MVVM,我的窗口的ViewModel公开一个名为Tools
的属性,该属性返回一个包含我所有工具窗口的ViewModel的数组。然后将该属性绑定到XAML中我的对接控件的AnchorablesSource
属性。
但问题是AvalonDock将3个工具窗格显示为3个选项卡,而不是将它们垂直堆叠。
有没有人在这里使用MVVM的AvalonDock?我在这里前进的方式是什么? LayoutInitializer
班级在解决这个问题上有什么作用?
您是否尝试过使用并在此所有LayoutAnchorable中。 –
@ N.J:是的。我已经做到了,那确实有效。然而,问题是我需要这样做MVVM方式,即方向/布局应该由VM属性决定,而不是静态设计时XAML。 'AnchorablesSource'和'DocumentsSource'是两个很好的例子,让我们将布局绑定到VM属性,而不是在设计时在XAML中定义它们。 – dotNET
@dotNET,“布局”实际上是“视图”,所以在xaml中定义这个属性或者在代码隐藏中做这个属性是没有问题的。相反,您的视图模型不得管理任何呈现方面,例如视图布局。 – dymanoid