如何在MVVM应用程序中使用Avalondock的示例代码

15

我正在尝试在我的WPF应用程序中使用AvalonDock,这是一个MVVM应用程序。查看周围,我找不到任何演示如何实现该功能的示例应用程序。

AvalonDock声称它原生支持MVVM,因此应该很容易支持mvvm,但没有示例代码。

我的问题是:

  1. 如何编写XAML以具有文档管理器并将其绑定到ViewModel?
  2. 如何在此情况下向面板添加新文档?
  3. 如何从documentmanager获取关于布局的信息(如果可能)。

AvalonDock 3.5版本的GitHub存储库中有4-5个不同的示例实现(包括浅色/深色主题)和WinForms: 具有丰富示例的GitHub项目 ...并使用Google搜索所有使用AvalonDock作为关键字的GitHub存储库也很有用,以查找更多示例: 在Github存储库上进行Google搜索 - user8276908
1个回答

19
在AvalonDock的CodePlex源代码中有一个示例应用程序 - 它未包含在正常下载中。您需要前往“Source Control页面”并单击“Download”Source Control page
另外,我编写了一个示例应用程序,您也可以使用它作为起点,我写了一篇快速博客文章描述它,并将其放在GitHub上
基本上,您可以设置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。

1
这是一个非常好的例子...使用AvalonDock 2.0和MVVM设计范例。 - aggietech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接