AvalonDock:多个工具窗口布局
我在我的WPF项目中使用了着名的对接库AvalonDock 2.0。 该库支持MVVM,这就是我想要做的。 GitHub上提供了一个样本MVVM测试应用程序。 我下载了示例并将其扩展为显示我需要的布局,大致如下所示:
---------------------------
| | |
| | T1 |
| |----|
| Docs | |
| | T2 |
| |----|
| | |
| | T3 |
---------------------------
正如你所看到的,我有一个主文档区域和一个工具区域,它有3个LayoutAnchorable
,它们对接到右侧并垂直堆叠。 使用MVVM,我的窗口的ViewModel公开了一个名为Tools
的属性,它返回一个包含我所有工具窗口的ViewModel的数组。 然后,将该属性绑定到XAML中我的对接控件的AnchorablesSource
属性。
但问题是AvalonDock将3个工具窗格显示为3个选项卡,而不是将它们垂直堆叠。
有没有人在这里使用MVVM的AvalonDock? 我在这里前进的方式是什么? LayoutInitializer
类在解决这个问题上有什么作用吗?
后来的研究表明,它实际上是LayoutInitializer
类将ViewModel对象分配给我的LayoutAnchorablePane
的工作。 布局本身仍应该在XAML中定义(或者如果您愿意,可以通过代码隐藏)。 这从理论角度来看也是正确的; ViewModel不应该负责管理布局(View)。
上一篇: AvalonDock: Multiple tool windows layout
下一篇: AvalonDock : DockableContent Context Menu Shows wrong list of menus