2008-09-26 7 views
7

Gibt es eine Möglichkeit, eine Ressource zu einem ResourceDictionary aus Code hinzuzufügen, ohne ihm einen Ressourcenschlüssel zu geben?Erstellen einer XAML-Ressource aus Code ohne Schlüssel

Zum Beispiel, ich habe diese Ressource in XAML:

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

Ich brauche diese Ressource dynamisch von Code zu erstellen und sie das TreeView Resource hinzuzufügen. In XAML ohne Schlüssel bedeutet dies jedoch, dass es standardmäßig für alle FieldPropertyInfo-Typen verwendet wird. Gibt es eine Möglichkeit, die Ressource im Code ohne einen Schlüssel hinzuzufügen, oder gibt es eine Möglichkeit, einen Schlüssel zu verwenden und ihn dennoch für alle FieldPropertyInfo-Typen verwenden zu lassen?

Hier ist, was ich in C# getan habe bisher:

HierarchicalDataTemplate fieldPropertyTemplate = new HierarchicalDataTemplate("FieldProperyInfo"); 

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

this.Resources.Add(null, fieldPropertyTemplate); 

Offensichtlich eine Ressource der Resource der Schlüssel null Hinzufügen funktioniert nicht.

Antwort

8

die Art, die Sie die Vorlage mögen, als Schlüssel zur Anwendung:

HierarchicalDataTemplate fieldPropertyTemplate = new 
    HierarchicalDataTemplate("FieldProperyInfo"); 

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

Der Grund Code nicht war funktioniert Ihre tatsächlich nicht die Bindung Einstellung. Sie müssen SetBinding mit der Eigenschaft aufrufen, an die die Bindung gebunden werden soll.

0

die Art, die Sie die Vorlage mögen, als Schlüssel zur Anwendung:

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

Wie bei Ihrer Vorlage über Sie einen Typen liefern. Sie müssen entweder einen Namen oder einen Typ angeben.

+0

Obwohl dies ausgeführt wird, wird die Vorlage nicht von der TreeView verwendet. Scheint so, als ob etwas über den Ressourcenschlüssel verhindert, dass er benutzt wird. –

+0

@Orion: Also hast du meine Antwort gesehen und deine komplett bearbeitet, um meine zu kopieren? Wirklich stilvoll ... –