AvalonDock:多个工具窗口布局

时间:2015-07-20 08:59:05

标签: c# wpf xaml mvvm avalondock

我在WPF项目中使用了众所周知的停靠库AvalonDock 2.0。该库支持MVVM,这正是我想要做的。 GitHub上提供了一个示例MVVM测试应用程序。我下载了示例并将其扩展为显示我需要的布局,大致如下所示:

---------------------------
|                    |    |
|                    | T1 |
|                    |----|
|      Docs          |    |
|                    | T2 |
|                    |----|
|                    |    |
|                    | T3 |
---------------------------

正如您所看到的,我有一个主文档区域和一个工具区域,其中有3个LayoutAnchorable s,它们停靠在右侧并垂直堆叠。使用MVVM,我的窗口的ViewModel公开了一个名为Tools的属性,该属性返回一个包含所有工具窗口的ViewModels的数组。然后我将此属性绑定到XAML中我的对接控件的AnchorablesSource属性。

然而问题是AvalonDock将3个工具窗格显示为3个选项卡而不是垂直堆叠它们。

有没有人在这里使用AvalonDock和MVVM?我的前进方向是什么? LayoutInitializer班级在解决此问题方面有任何作用吗?

1 个答案:

答案 0 :(得分:1)

后来的研究表明,LayoutInitializer类的工作实际上是将ViewModel对象分配给LayoutAnchorablePane。布局本身仍然应该在XAML中定义(或者如果你愿意,可以通过代码隐藏)。从理论的角度来看这也是正确的; ViewModel不应负责管理布局(View)。