C# AvalonDock:多个工具窗口布局

C# AvalonDock:多个工具窗口布局,c#,wpf,xaml,mvvm,avalondock,C#,Wpf,Xaml,Mvvm,Avalondock,我在WPF项目中使用了著名的对接库。这个库支持MVVM,这就是我要做的。上提供了一个示例MVVM测试应用程序。我下载了示例并对其进行了扩展,以显示我需要的布局,大致如下所示: --------------------------- | | | | | T1 | | |----| | Docs | | | |

我在WPF项目中使用了著名的对接库。这个库支持MVVM,这就是我要做的。上提供了一个示例MVVM测试应用程序。我下载了示例并对其进行了扩展,以显示我需要的布局,大致如下所示:

---------------------------
|                    |    |
|                    | T1 |
|                    |----|
|      Docs          |    |
|                    | T2 |
|                    |----|
|                    |    |
|                    | T3 |
---------------------------
正如您所看到的,我有一个主文档区域和一个工具区域,其中有3个
layoutachrable
s停靠在右侧并垂直堆叠。使用MVVM,“我的窗口”的ViewModel会公开一个名为
Tools
的属性,该属性返回一个包含所有“我的工具”窗口的ViewModels的数组。然后将此属性绑定到XAML中停靠控件的
AnchorableSource
属性

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


这里有人用过AvalonDock和MVVM吗?我的前进方向是什么?
LayoutInitializer
类在解决这个问题中有什么作用吗?

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

您是否尝试过在该视图中使用所有的LayoutAchorable。@N.J:是的。我已经做到了,这确实有效。然而,问题是我需要用MVVM的方式来做,即方向/布局应该由VM属性决定,而不是静态设计时XAML
AnchorableSource
DocumentsSource
是两个很好的例子,让我们将布局绑定到VM属性,而不是在设计时在XAML中定义它们。@dotNET,“布局”实际上是“视图”,因此在XAML中定义此属性,甚至在代码隐藏中定义此属性都是正确的。相反,视图模型不能管理任何表示方面,如视图布局。@dymanoid:您有一个有效点。这就是我的结局。谢谢你的提示!