演示如何在MVVM应用程序中使用Avalondock的示例代码
本文关键字:Avalondock 代码 应用程序 MVVM | 更新日期: 2023-09-27 18:01:21
我试图在我的wpf应用程序中使用AvalonDock,这是一个MVVM应用程序。环顾四周,我找不到任何示例应用程序来显示如何做到这一点。
AlavonDock说它原生支持MVVM,所以支持MVVM应该很容易,但是没有样例代码。
我的问题是:
- 如何编写xaml,有一个文档管理器,它被绑定到视图模型?
- 在这种情况下如何向面板添加新文档?
- 如何从documentmanegr中获取布局信息(如果可能的话)。
在AvalonDock的CodePlex源代码中有一个示例应用程序-它不包括在正常下载中。你需要进入源代码控制页面,点击"下载"。
另外,我写了一个示例应用程序,你也可以使用它来开始,我写了一篇快速的博客文章来描述它,并把它放在GitHub上。
基本上,你可以设置LayoutItemContainerStyle
来架起View和ViewModel之间的桥梁,例如:
<Window ...
xmlns:dock="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:dockctrl="clr-namespace:Xceed.Wpf.AvalonDock.Controls;assembly=Xceed.Wpf.AvalonDock"
>
...
<dock:DockingManager DataContext="{Binding DockManagerViewModel}"
DocumentsSource="{Binding Documents}" >
<dock:DockingManager.LayoutItemContainerStyle>
<!-- you can add additional bindings from the layoutitem to the DockWindowViewModel -->
<Style TargetType="{x:Type dockctrl:LayoutItem}">
<Setter Property="Title" Value="{Binding Model.Title}" />
<Setter Property="CloseCommand" Value="{Binding Model.CloseCommand}" />
<Setter Property="CanClose" Value="{Binding Model.CanClose}" />
</Style>
</dock:DockingManager.LayoutItemContainerStyle>
</dock:DockingManager>
</Window>
在这个例子中,DockManagerViewModel有一个属性'Documents',它是一个viewmodel的集合,这些viewmodel有一个Title, CloseCommand和CanClose属性。