我正在尝试在我的wpf应用程序中使用AvalonDock,这是一个MVVM应用程序。环顾四周,我找不到任何示例应用程序显示我该怎么做。
AlavonDock表示它对MVVM有原生支持,因此支持mvvm应该很容易,但是没有示例代码。
我的问题是:
答案 0 :(得分:12)
在AvalonDock的CodePlex源中有一个示例应用程序 - 它不包含在正常下载中。您需要转到Source Control page并点击“下载”。
此外,我编写了一个示例应用程序,您也可以使用它来开始,我写了quick blog post describing it和put it on 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”,其中包含具有Title,CloseCommand和CanClose属性的ViewModel集合。