키없이 코드에서 XAML 리소스 생성
-
02-07-2019 - |
문제
리소스 키를 제공하지 않고 코드에서 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에서는 기본적으로 모든 FieldPropertyInfo 유형에 사용된다는 것을 의미합니다. 키가 없으면 코드의 리소스에 추가 할 수있는 방법이 있습니까?
지금까지 C#에서 한 일은 다음과 같습니다.
HierarchicalDataTemplate fieldPropertyTemplate = new HierarchicalDataTemplate("FieldProperyInfo");
fieldPropertyTemplate.ItemsSource = new Binding("Value.Values");
this.Resources.Add(null, fieldPropertyTemplate);
분명히, 자료에 리소스를 추가하면 키 널이 작동하지 않습니다.
해결책
템플릿을 키로 적용하려는 유형을 사용하십시오.
HierarchicalDataTemplate fieldPropertyTemplate = new
HierarchicalDataTemplate("FieldProperyInfo");
fieldPropertyTemplate.SetBinding(
HierarchialDataTemplate.ItemSourceProperty,
new Binding("Value.Values");
this.Resources.Add(FieldPropertyInfo.GetType(), fieldPropertyTemplate);
코드가 작동하지 않은 이유는 귀하의 것이 었습니다 실제로 바인딩을 설정하지 않았습니다. 바인딩을 원하는 속성과 함께 SetBinding을 호출해야합니다.
다른 팁
템플릿을 키로 적용하려는 유형을 사용하십시오.
this.Resources.Add(FieldPropertyInfo.GetType(), fieldPropertyTemplate);
위의 템플릿과 마찬가지로 유형을 제공합니다. 이름이나 유형을 제공해야합니다.
제휴하지 않습니다 StackOverflow