我正在尝试在我的WPF应用程序中使用AvalonDock,这是一个MVVM应用程序。查看周围,我找不到任何演示如何实现该功能的示例应用程序。
AvalonDock声称它原生支持MVVM,因此应该很容易支持mvvm,但没有示例代码。
我的问题是:
- 如何编写XAML以具有文档管理器并将其绑定到ViewModel?
- 如何在此情况下向面板添加新文档?
- 如何从documentmanager获取关于布局的信息(如果可能)。
我正在尝试在我的WPF应用程序中使用AvalonDock,这是一个MVVM应用程序。查看周围,我找不到任何演示如何实现该功能的示例应用程序。
AvalonDock声称它原生支持MVVM,因此应该很容易支持mvvm,但没有示例代码。
我的问题是:
LayoutItemContainerStyle
来弥合视图和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属性的ViewModels。