我在我的WPF项目中使用了著名的对接库AvalonDock 2.0。这个库支持MVVM,这就是我想要做的。GitHub上有一个示例MVVM测试应用程序。我下载了示例并对其进行了扩展,以显示我需要的布局,大致如下所示:
---------------------------
| | |
| | T1 |
| |----|
| Docs | |
| | T2 |
| |----|
| | |
| | T3 |
---------------------------如您所见,我有一个主文档区域和一个工具区域,其中有3个LayoutAnchorable,它们停靠在右侧,垂直堆叠。使用MVVM,我的窗口的ViewModel公开了一个名为Tools的属性,该属性返回包含所有工具窗口的ViewModels的数组。然后将此属性绑定到XAML中我的停靠控件的AnchorablesSource属性。
然而,问题是AvalonDock将3个工具窗格显示为3个选项卡,而不是垂直堆叠它们。
这里有人在MVVM中使用过AvalonDock吗?我在这里前进的路是什么?LayoutInitializer类在解决这个问题方面有什么作用吗?
发布于 2015-07-22 11:49:09
后来的研究发现,实际上LayoutInitializer类的工作是将ViewModel对象分配给我的LayoutAnchorablePane,布局本身仍然应该在XAML中定义(如果你愿意的话,也可以通过代码隐藏)。从理论上看,这也是正确的;ViewModel不应该负责管理布局( view )。
https://stackoverflow.com/questions/31512432
复制相似问题