DataTemplateSelectorは、データの型が変更されたときに使用することを目的としています。たとえば、Personという基本クラスと、2 つの継承されたクラスProfessorとStudentがあるとします。教授と学生の両方を含むPeopleというコレクションを作成できます。DataTemplateSelectorを使用して、教授オブジェクトを表示するときに 1 つのデータ テンプレートを使用し、学生オブジェクトを表示するときに別のデータ テンプレートを使用します。
DataTemplateSelectorとDataTemplateは、通常、選択とは関係がないため、おそらく必要なものではありません。項目が選択されたときに表示されるすべての UI 要素 (チェック、紫色の境界線など) は、ItemContainerの一部です。実行時にDataTemplateはItemContainer内に配置されますが、これはContainerTemplateを編集することで変更できます。
Expression Blend で、ListView を右クリックし、[追加テンプレートの編集] -> [生成されたアイテム コンテナーの編集 (ItemContainerStyle)] -> [コピーの編集] を選択します。カスタム コンテナーに名前を付ける必要があります。現在のページではなくアプリ レベルで保存することをお勧めします (そうしないと、他のページで使用できなくなります)。
名前を付けて [OK] をクリックすると、Blend は (ページではなく) コンテナーを編集するモードに切り替わります。状態パネルが開いていることを確認してください(ウィンドウ ->状態が表示されない場合)。多数の状態が表示されます。編集したいものはSelectedと呼ばれ、 SelectionStatesというグループにあります。
変更が完了したら、[オブジェクトとタイムライン] パネルの上部にある上向き矢印の付いた水平線のようなボタンをクリックします (このボタンにカーソルを合わせると、[範囲を [ページ] に戻す] と表示されます) 。 . コンテナを編集する代わりに、ページを編集する作業に戻ります。アプリを実行すると、違いがわかるはずです。
注意: このメソッドを使用すると、コンテナに関するあらゆる変更を行うことができます。境界線のようなもの、またはアイテムを 3D 空間で大きくしたり小さくしたり、傾けたりします (傾けるには、プロパティ ペインの [変換] グループの下にある [投影] を使用します)。ただし、DataTemplate の一部を表示または非表示にすることはできません。たとえば、選択されていない顧客の名を非表示にすることはできません。この種の変更については、おそらく独自のカスタム DataTemplateSelector で何かを試す必要があります。しかし、DataTemplateSelector がテンプレートを生成するように求められたときに項目が選択されているかどうかを確認できるかどうかはわかりません。
開発サポート、設計サポート、その他の優れた機能が進行中: http://bit.ly/winappsupport