2009-11-07 3 views
1

나는 다음과 같은 XAML을 가지고TreeViewItem는 확장 제어 표시되지

<TreeView> 
    <TreeViewItem ItemsSource={Binding} Header="TopMost" IsExpanded="True"> 
     <TreeViewItem.ItemTemplate> 
     <DataTemplate> 
      <TreeViewItem> 
       <TreeViewItem.Header> 
       <TextBlock Text="{Binding SubTopic}"/> 
       <TreeViewItem.Header> 
       <!-- further data representation --> 
      </TreeViewItem> 
     </DataTemplate> 
     </TreeViewItem.ItemTemplate> 
    </TreeViewItem> 
    <TreeViewItem> 
    </TreeViewItem> 
</TreeView> 

첫 번째 TreeViewItem 확장하고 아이를 보여 주지만, 텍스트의 왼쪽에 표시되어야합니다 셀렉터 최상위가 존재하지 않습니다. TopMost Header를 두 번 클릭하여 주 TreeViewItem의 자식을 접어서 확장 할 수 있습니다. 어떻게 해결할 수 있습니까?

답변

4

XAML은 오타 (제 2의 < TreeViewItem.Header>를 < /TreeViewItem.Header>로 변경)를 제외하고 기본 WPF 프로젝트에서 정상적으로 작동합니다. 내가 그것을 실행하면 "TopMost"라는 단어 옆에 선택기 (작은 삼각형)가 보이고 올바르게 작동합니다. 당신이 어떤 지점에서 TreeViewItem에 대한 스타일이나 트 리뷰를 오버라이드 (override) 한 경우

  • 봐보고 : 나는 것

    .

  • ToggleButton이 시각적 트리에 그리드의 첫 번째 자식으로 존재하는지 확인하기 위해 런타임에 생성 된 시각적 트리 (VS.NET 디버거 또는 Mole과 같은 도구 사용)를 탐색하십시오. TreeViewItem의 기본 템플릿은 확장기가 아닌 ToggleButton을 사용합니다.
  • 하나의 자식과 별도로 작동하는지 확인하십시오. 문제가 발견되면 문제가 발생할 때까지 점진적으로 변경하십시오.

이 당신이하고있는 것처럼 DataTemplates 내부 TreeViewItems를 사용할 수 없다고하는 법은 없습니다 만>은 < 트 리뷰의 목적을 패배 있기 때문에 일반적으로 좋은 생각이 아니다, 여러 TreeViewItem에 선택, 포커스 및 내게 필요한 옵션 지원 기능을 제공합니다.

당신은 그것을 발견 할 것이다 :

  1. 최상위 레벨을 제외하고 선택한 항목을 추적하지 않습니다 트 리뷰
  2. 당신은 독립적으로 "나무"의 항목을 선택할 수 있습니다 예를 들어 여러 항목을 선택할 수 있습니다
  3. 및 그들은 그것을 깨닫지 못한다. 라디오 버튼 대신 체크 박스를 사용합니다.
  4. < TreeView> 태그를 완전히 생략해도 여전히 정상적으로 실행됩니다.

TreeView가 그 작업을 수행 할 수 없기 때문입니다. DataTemplate은 TreeView에서 TreeViewItems를 숨겨서 최상위 항목 만 보도록합니다. TreeView 개체가 전체 트리를 볼 수있게하는 좋은 방법은 HierarchicalDataTemplate을 확인하십시오.

+0

광범위한 답변을 주셔서 감사합니다. 익스플로러 버튼이 사라지는 원인이 무엇인지 모르겠지만 HierarchicalDataTemplate을 구현할 때 다시 돌아 왔습니다. – Dabblernl

관련 문제