我知道这是不好的设计,但我需要从我的视图模型访问视图。这是因为我有一些旧控件,例如 Winforms 控件,它们不支持绑定,需要由代码填充。
我正在使用 AvalonDock 2.0 的 MVVM 模型,并且有类似的东西:
<ad:DockingManager x:Name="dockManager"
DocumentsSource="{Binding Files}"
AnchorablesSource="{Binding Tools}"
ActiveContent="{Binding ActiveDocument, Mode=TwoWay, Converter={StaticResource ActiveDocumentConverter}}">
<ad:DockingManager.LayoutItemTemplateSelector>
<local:PanesTemplateSelector>
<local:PanesTemplateSelector.NavigationViewTemplate>
<DataTemplate>
<tvext:TreeViewExtended />
</DataTemplate>
</local:PanesTemplateSelector.NavigationViewTemplate>
</local:PanesTemplateSelector>
</ad:DockingManager.LayoutItemTemplateSelector>
所以模板 NavigationViewTemplate 绑定到集合 Tools 中的一项,这是我的 NavigationViewModel 类型的 ViewModel。
我将文本框绑定到我的视图模型的属性没有问题。但我不知道如何从我的 NavigationViewModel 访问模板内的 tvext:TreeViewExtended 控件以填充它。
TIA 迈克尔