Criando um recurso XAML a partir do Código Without a Key
-
02-07-2019 - |
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.
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.