Pergunta

Existe uma maneira de adicionar um recurso a um ResourceDictionary a partir do código sem dar-lhe uma chave de recurso?

Por exemplo, eu tenho este recurso em XAML:

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

Eu preciso para criar este recurso de forma dinâmica a partir do código e adicioná-lo à TreeView ResourceDictionary. No entanto, em XAML não tendo meios chave que ele é usado, por padrão, para todos os tipos FieldPropertyInfo. não existe uma maneira de adicioná-lo ao recurso no código sem ter uma chave ou é uma maneira eu posso usar uma chave e ainda que seja usado em todos os tipos FieldPropertyInfo?

Aqui está o que eu tenho feito em C # até agora:

HierarchicalDataTemplate fieldPropertyTemplate = new HierarchicalDataTemplate("FieldProperyInfo");

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

this.Resources.Add(null, fieldPropertyTemplate);

Obviamente, a adição de um recurso para o ResourceDictionary o nulo chave não funciona.

Foi útil?

Solução

Use o tipo que você deseja que o modelo para aplicar a como a chave:

HierarchicalDataTemplate fieldPropertyTemplate = new 
    HierarchicalDataTemplate("FieldProperyInfo");

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

A razão seu código não estava funcionando era a sua não foram realmente definir a ligação . Você precisa SetBinding convocação, com a propriedade que você deseja a encadernação vinculado.

Outras dicas

Use o tipo que você deseja que o modelo para aplicar a como a chave:

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

Tal como acontece com o modelo acima de você fornecer um tipo. Você tem que quer ter de fornecer um nome ou um tipo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top