2014-11-23 5 views
0

TreeView 노드 중 하나를 클릭해도 선택되지 않습니다. 이미지를 선택하려면 노드의 왼쪽에있는 작은 직사각형 영역 (이미지에 빨간색으로 표시됨)을 클릭해야합니다. 또한이 방법으로 노드를 선택하면 모든 하위 노드가있는 전체 하위 트리가 한 번에 선택됩니다. 무슨 일이 일어나고 있는지 잘 모르겠다.TreeView 노드 이상한 선택 동작

<TreeView ItemsSource="{Binding FirstGeneration}"> 
    <TreeView.Resources>   
     <DataTemplate DataType="{x:Type local:AccountNodeVM}"> 
     <TreeViewItem Header ="{Binding Name}" /> 
     </DataTemplate> 

     <HierarchicalDataTemplate DataType="{x:Type local:CategoryNodeVM}" ItemsSource="{Binding SubCategories}"> 
     <TreeViewItem Header="{Binding Name}" ItemsSource="{Binding Accounts}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 

    <TreeView.ItemContainerStyle> 
     <Style TargetType="{x:Type TreeViewItem}"> 
     <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
     <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
     <Setter Property="FontWeight" Value="Normal" /> 
     </Style> 
    </TreeView.ItemContainerStyle> 
    </TreeView> 

FirstGeneration, SubCategories, Accounts이 내 모든 뷰 모델에 정의되어 있습니다

enter image description here

여기 내 XAML입니다. 나는 HierarchicalDataTemplateTreeViewItem 대신 TextBlock을 사용하려고 시도했지만 아무런 이득도 얻지 못했습니다. 여기서 내가 뭘 잘못하고 있니?

답변

0

알아 냈습니다. TreeView은 각 노드에 대해 TreeViewItem을 자체로 생성하므로, HierarchicalDataTemplate을 만들 때는 TreeViewItem을 포함 할 필요가 없습니다. 그렇지 않으면 WPF가 TreeViewItem을 자체 TreeViewItem 안에 포함하므로 선택 메커니즘이 혼란 스럽습니다. HierarchicalDataTemplateTextBlock (또는 복잡한 노드 구조가있는 경우 StackPanel 또는 다른 컨테이너)를 넣고 WPF가 노드 생성 작업을 수행하게하십시오. 희망이 다른 사람을 도와줍니다.