7

リソース キーを指定せずにコードから ResourceDictionary にリソースを追加する方法はありますか?

たとえば、XAML に次のリソースがあります。

<TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type xbap:FieldPropertyInfo}"
        ItemsSource="{Binding Path=Value.Values}">
            <TextBlock Text="{Binding Path=Name}" />
    <HierarchicalDataTemplate>
</TreeView.Resources>

このリソースをコードから動的に作成し、それを TreeView ResourceDictionary に追加する必要があります。ただし、XAML では Key がないということは、デフォルトですべての FieldPropertyInfo 型に使用されることを意味します。キーを持たずにコードでリソースに追加する方法はありますか、またはキーを使用してすべての FieldPropertyInfo タイプで使用できる方法はありますか?

これまでにC#で行ったことは次のとおりです。

HierarchicalDataTemplate fieldPropertyTemplate = new HierarchicalDataTemplate("FieldProperyInfo");

fieldPropertyTemplate.ItemsSource = new Binding("Value.Values");

this.Resources.Add(null, fieldPropertyTemplate);

明らかに、リソースを ResourceDictionary にキー null を追加しても機能しません。

4

2 に答える 2

8

テンプレートをキーとして適用するタイプを使用します。

HierarchicalDataTemplate fieldPropertyTemplate = new 
    HierarchicalDataTemplate("FieldProperyInfo");

fieldPropertyTemplate.SetBinding(
   HierarchialDataTemplate.ItemSourceProperty, 
   new Binding("Value.Values");
this.Resources.Add(FieldPropertyInfo.GetType(), fieldPropertyTemplate);

コードが機能しなかった理由は、実際に binding を設定していなかったためです。バインディングをバインドするプロパティを指定して、SetBinding を呼び出す必要があります。

于 2008-09-26T18:05:37.670 に答える
0

テンプレートをキーとして適用するタイプを使用します。

this.Resources.Add(FieldPropertyInfo.GetType(), fieldPropertyTemplate);

上記のテンプレートと同様に、型を指定します。名前またはタイプを指定する必要があります。

于 2008-09-26T18:03:13.417 に答える