【问题标题】:MVVM Floating Pane in Avalon Dock 2 (via Caliburn)Avalon Dock 2 中的 MVVM 浮动窗格(通过 Caliburn)
【发布时间】:2013-09-28 13:26:35
【问题描述】:

我如何绑定到模型,以便 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>

【问题讨论】:

    标签: c# wpf caliburn.micro avalondock


    【解决方案1】:

    我还没有按照您的建议使用浮动窗口,但我已经成功地将 Caliburn.Micro 与 AvalonDock 集成。您需要几个示例来帮助您和文档。

    1. 下载AvalonDock Source Code
    2. 下载Gemini Source Code(Caliburn.Micro 和 AvalonDock 的混搭)。

    简而言之,将 LayoutInitializer 与 ToolViewModelBase 上的属性结合使用,以指示可锚定对象应以浮动方式打开。

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

    感兴趣的 AvalonDock 源代码如下,您可以在 Gemini 中找到等价物。

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

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

    【讨论】:

    • 干杯我将研究这种方法。布局策略对我来说是不知道的,而且似乎很有用,尤其是如果您的 ViewModel 实现 ILayoutUpdateStrategy
    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多