展示如何在 MVVM 应用程序中使用 Avalondock 的示例代码 [关闭]
Posted
技术标签:
【中文标题】展示如何在 MVVM 应用程序中使用 Avalondock 的示例代码 [关闭]【英文标题】:Sample code to show how to use Avalondock in an MVVM application [closed] 【发布时间】:2014-06-17 20:35:08 【问题描述】:我正在尝试在我的 wpf 应用程序中使用 AvalonDock,这是一个 MVVM 应用程序。环顾四周,我找不到任何示例应用程序来展示我如何做到这一点。
AlavonDock 说它原生支持 MVVM,所以支持 mvvm 应该很容易,但是没有示例代码。
我的问题是:
-
如何编写具有文档管理器并绑定到的 xaml
视图模型?
在这种情况下如何将新文档添加到面板?
如何从 documentmanegr 获取有关布局的信息(如果可能)。
【问题讨论】:
目前有一个 AvalonDock 版本 3.5 的 GitHub 存储库,其中包含 4-5 个不同的示例实现(包括主题光/暗)和 WinForms:GitHub project with plenty of samples ...并在所有 GitHub 存储库中使用 Google 搜索AvalonDock 作为 keywork 也应该有助于查找更多样本:Google search over Github repositories 【参考方案1】:在 AvalonDock 的 CodePlex 源中有一个示例应用程序 - 它不包含在正常下载中。您需要转到Source Control page 并点击“下载”。
另外,我写了一个示例App,你也可以用它来开始,我写了quick blog post describing it和put 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”,其中包含一组 ViewModel,这些 ViewModel 具有 Title、CloseCommand 和 CanClose 属性。
【讨论】:
这是一个非常好的例子......将 AvalonDock 2.0 与 MVVM 设计范式结合使用以上是关于展示如何在 MVVM 应用程序中使用 Avalondock 的示例代码 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章