如何将我的 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我会很高兴听到。
拜托,我正在努力理解一些东西,我真的需要一些指导,因为我迷路了。
我创建了一个名为 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我会很高兴听到。