2014-05-01 36 views
9

我想在我的wpf应用程序中使用AvalonDock,这是一个MVVM应用程序。环顾四周,我找不到任何示例应用程序,显示如何执行此操作。展示如何在MVVM应用程序中使用Avalondock的示例代码

AlavonDock说它具有对MVVM的本地支持,所以应该很容易支持mvvm,但是没有示例代码。

我的问题是:

  1. 怎么写,有一个文件管理器XAML和它绑定到 视图模型?
  2. 如何在此场景中将新文档添加到面板?
  3. 如何从documentmanegr获得有关布局的信息(如果可能的话)。

回答

10

有一个示例应用中AvalonDock的CodePlex网站源代码 - 它不包括在正常下载。你需要去Source Control page然后点击'下载'。

此外,我写了一个示例应用程序,也可以用来开始,我写了一个quick blog post describing itput it on 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具有与具有的ViewModels的集合的属性“文档” Title,CloseCommand和CanClose属性。

+0

这是一个非常好的例子...使用AvalonDock 2.0与MVVM设计范例 – aggietech

相关问题