如何将我的UserControl绑定到AvalonDock

时间:2015-02-13 14:29:31

标签: c# wpf user-controls

请让我忘记了解某些事情,我真的需要一些方向,因为我迷失了。

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

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

我在持有Docking Manager的窗口中创建了一个数据模板

  <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的模块,并将viewModel返回给MainWin视图模型。 我的问题是我不知道应该绑定AvalonDock的DocumentSource,正如你在上面看到的那样。

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

伙计们,任何帮助都会受到高度关注,因为我的想法已经不多了。

谢谢

1 个答案:

答案 0 :(得分:0)

好的,既然我的问题没有答案,这就是我要解决的问题:

  • 我的UserControl(终端)将实现一个接口IUIWindow。
  • 此接口将由主视图模型保存在observebale集合中,该集合将动态添加或删除IUIWindow元素。
  • ,位于主视图中的Avalon基座将绑定到其DocumentSource中的该集合。
  • 在绑定中,我将保存一个转换器,它将从接口转换为Document期望的类型。

这是我能找到的最佳解决方案,如果有人有任何意见/评论/建议,我将很高兴听到。