문제

리소스 키를 제공하지 않고 코드에서 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);

위의 템플릿과 마찬가지로 유형을 제공합니다. 이름이나 유형을 제공해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top