2

別々のファイルに と複数の がありListBoxます。DataTemplate

<ListBox ItemTemplate="{StaticResource ItemTemplate1}"/>

Styles.xamlファイル内:

<DataTemplate x:Key="ItemTemplate1">...</DataTemplate>

<DataTemplate x:Key="ItemTemplate2">...</DataTemplate>

リストにあるオブジェクトのタイプに応じて、ItemTemplateのを変更したい。ListBox

DataTemplatemy のプロパティにバインドできるように、コード ビハインドで個別の にアクセスする方法はありPageますか?

4

3 に答える 3

1

なしでそれを行う方法TemplateSelectorは、DataType プロパティを指定し、x:Key を指定しないことです。

<DataTemplate DataType="{x:Type Type1}">...</DataTemplate>
<DataTemplate DataType="{x:Type Type2}">...</DataTemplate>

この場合、適切な DataTemplate が、指定された型のプロパティがバインドされているすべての場所に自動的に適用されます。

しかし、私は使用したいと思いますTemplateSelector

コード ビハインドで分離された DataTemplate にアクセスするには、まずリソース ディクショナリを取得する必要があります。

var dict = new ResourceDictionary 
{Source = new Uri("/ProjectNamespace;component/Styles.xaml",  UriKind.Relative)};

次に、テンプレートを取得できます。

var dataTemplate = (DataTemplate) dict["ItemTemplate1"];
于 2012-10-14T10:28:53.290 に答える
1

このソリューションを試してみてください:

WP7 でタイプごとに動的にデータ テンプレートを適用する

http://www.codeproject.com/Articles/113152/Applying-Data-Templates-Dynamically-by-Type-in​​-WP7

WP7に基づいていますが、あなたにも役立つはずです。

于 2012-10-14T09:35:06.097 に答える
0

要件に合わせて、WPF に組み込みのサポートがあります。DataTemplateSelectorを読み始めて、特定の基準に基づいて実行時にテンプレートを選択します。

于 2012-10-14T09:41:38.817 に答える