Avalon Dock 2中的MVVM浮动窗格(通过Caliburn)

时间:2013-09-19 09:30:46

标签: c# wpf caliburn.micro avalondock

如何绑定到模型,以便Avalon Dock 2将其视为浮动窗格?

在基本术语中,我想打开一个可以停靠的窗口,理想情况下有一个MVVM解决方案。但是我能够达到的最远的目标是获得锚点,我无法看到引诱对接管理器使它们浮动。

<xcad:DockingManager AnchorablesSource="{Binding Tools}">

    <xcad:DockingManager.LayoutItemContainerStyle>
        <Style TargetType="{x:Type xcad:LayoutItem}">
            <Setter Property="Title" Value="{Binding Model.Title}"/>    
        </Style>
    </xcad:DockingManager.LayoutItemContainerStyle>

    <xcad:DockingManager.LayoutItemTemplate>
        <DataTemplate>
            <ContentControl cal:View.Model="{Binding . }" IsTabStop="False" />
        </DataTemplate>
    </xcad:DockingManager.LayoutItemTemplate>

</xcad:DockingManager>

1 个答案:

答案 0 :(得分:1)

我还没有完成你对浮动窗口的建议,但我设法将Caliburn.Micro与AvalonDock集成在一起。您需要几个示例来帮助您和文档。

  1. 下载AvalonDock Source Code
  2. 下载Gemini Source Code(Mib up of Caliburn.Micro和AvalonDock)。
  3. 简而言之,将LayoutInitializer与ToolViewModelBase上的属性结合使用,以指示可锚定应该以浮动方式打开。

    <avalonDock:DockingManager.LayoutUpdateStrategy>
      <local:LayoutInitializer/>
    </avalonDock:DockingManager.LayoutUpdateStrategy>
    

    感兴趣的AvalonDock源代码如下,您将在Gemini中找到对应的代码。

    \ Version2.0 \ AvalonDock.MVVMTestApp \ ToolViewModel.cs

    \ Version2.0 \ AvalonDock.MVVMTestApp \ LayoutInitializer.cs