示例代码,用于说明如何在MVVM应用程序中使用Avalondock

man*_*ans 10 c# wpf xaml mvvm avalondock

我试图在我的wpf应用程序中使用AvalonDock,这是一个MVVM应用程序.环顾四周,我找不到任何示例应用程序显示我该怎么做.

AlavonDock表示它对MVVM有本机支持,所以它应该很容易支持mvvm,但是没有示例代码.

我的问题是:

  1. 如何编写具有文档管理器的xaml并将其绑定到viewmodel?
  2. 如何在此方案中向面板添加新文档?
  3. 如何从documentmanegr获取有关布局的信息(如果可能的话).

小智 12

在CodeFlex AvalonDock源中有一个示例应用程序 - 它不包含在正常下载中.您需要转到" 源代码管理"页面并单击"下载".

此外,我写了一个示例应用程序,你也可以用上手,我写了一个快速的博客文章描述它,并把它放在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>
Run Code Online (Sandbox Code Playgroud)

在此示例中,DockManagerViewModel具有属性"Documents",其中包含具有Title,CloseCommand和CanClose属性的ViewModel集合.