0
首先,我在尝试将Avalon Dock从1.3升级到2.0时面临此问题。 无论如何,我有一个ViewModel的集合,它使用数据模板,并将每个ViewModel变成一个单独的选项卡。使用DataTemplates查看模型。
所以我有这样的事情。
<ad:DockingManager x:Name="_dockingManager" DocumentsSource="{Binding Scenarios}">
<ad:DockingManager.LayoutItemTemplateSelector>
<local:PanesTemplateSelector>
<local:PanesTemplateSelector.ScenarioMainTemplate>
<DataTemplate >
<TabControl>
<TabItem Header="View1">
<winForm:WindowsFormsHost Name="_host1" />
<TextBlock Text="{Binding SampleText}"/>
</TabItem>
<TabItem Header="View2">
<winForm:WindowsFormsHost Name="_host2" />
</TabItem>
</TabControl>
</DataTemplate>
</local:PanesTemplateSelector.ScenarioMainTemplate>
</local:PanesTemplateSelector>
</ad:DockingManager.LayoutItemTemplateSelector>
<ad:LayoutRoot>
<ad:LayoutPanel Orientation="Vertical" >
<ad:LayoutDocumentPane/>
</ad:LayoutPanel>
</ad:LayoutRoot>
</ad:DockingManager>
那么上面会做的是每个绑定到文档源的情景的,它会在<ad:LayoutDocumentPane/>
创建一个新文档。
绑定工程,除了现在我需要在ViewModel一侧设置winFormHost的孩子。我不知道如何在视图模型中做到这一点。虽然可以使用SampleText的绑定。
我只需要在视图模型中获取_host1控件并进行设置。
对我来说,这样做似乎并不正确/合适的MVVM,因为它感觉就像我在视图模型视图播放。
是否有这样的替代,或者这是试图确定(如果是的话我怎么做呢?)
感谢, Kev84
我必须承认,我不知道avalondock和我的情况不是WPF templateselector因为我的建议取决于不同的视图模型类型。这是更容易btw :)也更容易实现mvvm时 – blindmeis 2012-07-10 05:52:31