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

时间:2014-05-01 11:05:23

标签: c# wpf xaml mvvm avalondock

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

AlavonDock表示它对MVVM有原生支持,因此支持mvvm应该很容易,但是没有示例代码。

我的问题是:

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

1 个答案:

答案 0 :(得分:12)

在AvalonDock的CodePlex源中有一个示例应用程序 - 它不包含在正常下载中。您需要转到Source Control page并点击“下载”。

此外,我编写了一个示例应用程序,您也可以使用它来开始,我写了quick blog post describing itput 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集合。