Domanda

C'è un modo per aggiungere una risorsa a un ResourceDictionary dal codice senza dargli una chiave di risorsa?

Ad esempio, ho questa risorsa in XAML:

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

Devo creare questa risorsa in modo dinamico dal codice e aggiungerla a TreeView ResourceDictionary. Tuttavia, in XAML senza chiave significa che viene utilizzato, per impostazione predefinita, per tutti i tipi di FieldPropertyInfo. C'è un modo per aggiungerlo alla risorsa nel codice senza avere una chiave o c'è un modo in cui posso usare una chiave e averla ancora utilizzata su tutti i tipi FieldPropertyInfo?

Ecco cosa ho fatto finora in C #:

HierarchicalDataTemplate fieldPropertyTemplate = new HierarchicalDataTemplate("FieldProperyInfo");

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

this.Resources.Add(null, fieldPropertyTemplate);

Ovviamente, aggiungendo una risorsa a ResourceDictionary la chiave null non funziona.

È stato utile?

Soluzione

Usa il tipo a cui vuoi applicare il modello come chiave:

HierarchicalDataTemplate fieldPropertyTemplate = new 
    HierarchicalDataTemplate("FieldProperyInfo");

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

Il motivo per cui il tuo codice non funzionava era che il tuo non stava effettivamente impostando l'associazione . È necessario chiamare SetBinding, con la proprietà a cui si desidera associare l'associazione.

Altri suggerimenti

Usa il tipo a cui vuoi applicare il modello come chiave:

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

Come per il tuo modello sopra, fornisci un tipo. Devi fornire un nome o un tipo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top