ContentControlで使用する複数のDataTemplatesを指定して、(Typeに基づいて)正しいものが使用されるようにしようとすると、ContentのToString()値になります。
<ContentControl DataContext="{Binding MyTreeRootViewModels}" Content="{Binding /, Path=CurrentlySelectedTreeViewModel}">
<ContentControl.Resources>
<DataTemplate DataType="x:Type vm:TypeAViewModel">
<StackPanel>
<local:TypeAUserControl />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="x:Type vm:TypeBViewModel">
<StackPanel>
<local:TypeBUserControl />
</StackPanel>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
上記の例では、TypeAViewModelのツリーノードがCurrentlySelectedTreeViewModelによって返されると、「MyApp.ViewModel.TypeAViewModel」が表示されます。 TypeAViewModelUserControlが表示されることを期待しています。
問題がユーザーコントロールに関連しているかどうかを確認するために、DataTemplatesの1つに単一の<TextBlock Text = "TESTING" />要素を配置しようとしました。同じ結果。
私が間違っていることについて何か考えはありますか?
(ちなみに、CurrentlySelectedTreeViewModelは、ツリービューで現在選択されているノードを返すプロパティです。問題なく機能しているようです。ツリーでノードを選択すると、ノードの正しいタイプ名がContentControlに表示されます)。
x:Type
ビットは中括弧の間にある必要があります{}
:
<DataTemplate DataType="{x:Type vm:TypeAViewModel}">
x:Type
はMarkupExtensionであり、XAMLコンパイラに示すには{}
が必要です。