如何将我的 UserControl 绑定到 AvalonDock

How to bind my UserControl to an AvalonDock

拜托,我正在努力理解一些东西,我真的需要一些指导,因为我迷路了。

我创建了一个名为 TerminalControl 的 UserControl,它有一个视图,该视图将绑定到视图模型中的文本 属性 的文本框包装起来,该视图通过连接到嵌入式系统的 RS232 实时更新。 所以流程是数据到达 RS232(更新)==> VM.Text ==>(数据绑定)==> TerminalView.TextBox.Text

我只想通过数据绑定将此用户控件添加到 AvalonDock 2.0。

我在 window 中创建了一个数据模板,其中包含对接管理器

  <avalonDock:DockingManager x:Name="dockManager"                                
                               DocumentsSource="{Binding ???}"                                   
                               Grid.Row="1">        
    <avalonDock:DockingManager.LayoutItemTemplateSelector>
        <vm:PanesTemaplateSelector>
            <vm:PanesTemaplateSelector.SessiomDataTemplate >
                <DataTemplate>
                    <Terminal:TerminalEditorView/>
                </DataTemplate>
            </vm:PanesTemaplateSelector.SessiomDataTemplate>        
        </vm:PanesTemaplateSelector>
    </avalonDock:DockingManager.LayoutItemTemplateSelector>

并在对接中创建文档

  <avalonDock:LayoutRoot>
        <avalonDock:LayoutPanel Orientation="Vertical">
            <avalonDock:LayoutDocumentPane/>
            <avalonDock:LayoutAnchorablePane Name="ToolsPane" DockHeight="150">
            </avalonDock:LayoutAnchorablePane>
        </avalonDock:LayoutPanel>
    </avalonDock:LayoutRoot>
</avalonDock:DockingManager>

我有一个模块可以创建 TerminalControl 和 returns viewModel 到 MainWin 视图模型。 我的问题是我不知道应该将 AvalonDock 的 DocumentSource 绑定到什么,正如您在上面看到的那样。

我做错了什么? 我的架构有问题吗?

伙计们,我们将不胜感激任何帮助,因为我 运行 没有想法。

谢谢

好的,因为我的问题没有答案,这是我正在进行的解决方案:

  • 我的 UserControl(终端)将实现一个接口 IUIWindow。
  • 此接口将由 observebale 集合中的主视图模型持有,它将动态添加或删除 IUIWindow 元素。
  • 并且驻留在主视图中的 Avalon dock 将绑定到其 DocumentSource 中的该集合。
  • 在绑定中,我将持有一个转换器,它将从接口转换为文档期望的类型。

这是我能找到的最好的解决方案,如果有人有任何解决方案opinions/remarks/suggestions我会很高兴听到。