展示如何在 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 的示例代码 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

展示如何在 MVVM 应用程序中使用 Avalondock 的示例代码 [关闭]

程序员2015年8月A:前端框架

avalon数组特性

avalon教程-简介

前端框架中MVVM数据绑定的实现方式详解

Avalon探索之旅