2010-12-26 3 views
2

안녕하세요, 저는 나무의 일부인 IFooNode 인터페이스를 사용하고 있습니다.
HierarchicalDataTemplate을 사용하여 TreeView에이 트리를 표시하려고합니다. 그러나 이것은 인터페이스 때문에 작동하지 않습니다. 내가 그 주위에 두 가지 방법으로 볼 둘 다 내가wpf와 인터페이스를 사용하는 방법 HierarchicalDataTemplate

  1. "좋은"전화 정말 IFooNode를 구현 입력하는 내용을 알아보십시오 것입니다 무엇에 대한 참조를 추가 한 후 어셈블리 정의 FooNode을 발견, (의이 FooNode ... 부르 자)

  2. (... Implementating 클래스는 결코 변하지 않는 희망) 해당 어셈블리와 FooNode에 대한 HierarchicalDataTemplate을 작성, IFooNode를 래핑 클래스 MyCoolIFooNodeWrapperForWpf 쓰기 트리에 결합하지 않지만, 트리 루트에서 MyCoolIFooNodeWrapperForWpf의 목록을 채우기 MyCoolIFooNodeWrapperForWpf에 대한 HierarchicalDataTemplate을 작성하십시오.

은 어떻게 든 항상

다른 아이디어 (I 생각이 ... 덜 악한 것)에 상관없이 데이터가 무엇인지 형, HierarchicalDataTemplate을 적용하지 수 있습니까?

+0

는 http://stackoverflow.com/a/9804166/603268 참조 (즉,이 IFoo에 대한 템플릿과 IBar 하나가 있다면, 당신은 IFooIBar을 지원하는 개체에 대한 사용합니까 어떤 템플릿?입니다) -이게 나를 위해 일했습니다. –

답변

2

ItemTemplateSelector를 사용할 수 있습니다. 선택기 코드에서 데이터 개체가 구현하는 인터페이스를 확인하고이 항목에 대해 적절한 DataTemplate/HeirarchicalDataTemplate을 선택할 수 있습니다.

선택기는 컨테이너 자체 (ItemsControl.ItemTemplateSelector)와 계층 적 데이터 템플릿 (HeirarchicalDataTemplate.ItemTemplateSelector)에 모두 적용될 수 있습니다.

나는 이것이 더 적은 악이라고 생각한다.

+0

고맙습니다. – Nils

0

여러 템플릿 중에서 선택하지 않으면 템플릿에 데이터 유형을 지정할 필요가 없습니다. 트리의 모든 객체가 인터페이스를 구현하는 경우 해당 인터페이스의 속성을 사용하여 템플릿을 고정하면됩니다. 해당 인터페이스에만 해당되도록 템플릿에서 아무 것도 할 필요가 없습니다.

개체가 지원하는 인터페이스를 기반으로 템플릿을 선택해야하는 경우 템플릿 선택기를 구현하고 WPF의 기본 제공 템플릿 선택을 방지하는 다 대일 문제를 처리해야합니다 메커니즘을 처음부터 인터페이스를 사용하지 못하게합니다.

+0

템플릿에 데이터 유형을 지정하지 않았지만 작동하지 않았습니다. 어쩌면 다시 시도해 볼게. – Nils

관련 문제