問題タブ [contenttemplateselector]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
147 参照

c# - xaml - 使用する ContentTemplateSelector を指定する方法は?

コンテンツ コントロールのContentTemplateSelectorプロパティにStaticResource.

例:<ContentControl Content="{Binding}" ContentTemplateSelector="{StaticResource MyTemplateSelector}"/>

MSDN の状態:

通常、同じタイプのオブジェクトに対して複数の DataTemplate があり、各データ オブジェクトのプロパティに基づいて適用する DataTemplate を選択する独自のロジックを提供する場合は、DataTemplateSelector を作成します。

ソース: DataTemplateSelector クラス

これを知って - 私の状況では、各オブジェクトが使用できる独自のデータ テンプレートのセットを持つ2 種類のオブジェクト があります。ビュー モデルのプロパティにコンテンツ コントロールをバインドする方法はありますか? 注意が必要なのは、データ テンプレートが xaml ファイルで定義されていることです。そのクラスに固有の新しいインスタンスを初期化することはできません。ContentTemplateSelector ContentTemplateSelectorContentTemplateSelector

追加情報: 各サブクラスを異なるタイプの objectとして表す必要がある親ビュー モデルがあります。そのため、切り替えられたサブクラス ビュー モデルに応じて、それぞれContentTemplateSelectorの および データ テンプレートを使用する必要があります。

上記もコンバーターで動作するようになりましたが、これには近づきたくありません。理想的には、このプロセスを可能な限り一般化するコードが必要です。つまり、正しいものを返すためだけに、将来新しいタイプのオブジェクトを追加するためにコンバーター コードを維持する必要はありませんDataTemplateSelector。場合によっては、新しいサブクラスが追加されるたびに、すぐに機能するはずです。