コンテンツ コントロールのContentTemplateSelector
プロパティにStaticResource
.
例:<ContentControl Content="{Binding}" ContentTemplateSelector="{StaticResource MyTemplateSelector}"/>
MSDN の状態:
通常、同じタイプのオブジェクトに対して複数の DataTemplate があり、各データ オブジェクトのプロパティに基づいて適用する DataTemplate を選択する独自のロジックを提供する場合は、DataTemplateSelector を作成します。
これを知って - 私の状況では、各オブジェクトが使用できる独自のデータ テンプレートのセットを持つ2 種類のオブジェクト があります。ビュー モデルのプロパティにコンテンツ コントロールをバインドする方法はありますか? 注意が必要なのは、データ テンプレートが xaml ファイルで定義されていることです。そのクラスに固有の新しいインスタンスを初期化することはできません。ContentTemplateSelector
ContentTemplateSelector
ContentTemplateSelector
追加情報: 各サブクラスを異なるタイプの objectとして表す必要がある親ビュー モデルがあります。そのため、切り替えられたサブクラス ビュー モデルに応じて、それぞれContentTemplateSelector
の および データ テンプレートを使用する必要があります。
上記もコンバーターで動作するようになりましたが、これには近づきたくありません。理想的には、このプロセスを可能な限り一般化するコードが必要です。つまり、正しいものを返すためだけに、将来新しいタイプのオブジェクトを追加するためにコンバーター コードを維持する必要はありませんDataTemplateSelector
。場合によっては、新しいサブクラスが追加されるたびに、すぐに機能するはずです。