それが悪いデザインであることは知っていますが、ビューモデルからビューにアクセスする必要があります。これは、バインドをサポートしておらず、コードで入力する必要がある古いコントロール(Winformsコントロールなど)があるためです。
私はAvalonDock2.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の1つのアイテムにバインドされます。これは、NavigationViewModelタイプの私のViewModelです。
たとえば、TextBoxをビューモデルのプロパティにバインドするのに問題はありません。しかし、NavigationViewModelからテンプレート内のtvext:TreeViewExtendedコントロールにアクセスして、テンプレートを埋める方法がわかりません。
TIAマイケル