2017-03-13 10 views
1

간단한 트리가 있지만 제대로 작동하지만 한 번의 클릭으로 강조 표시되지 않습니다. 사용자가 두 번 클릭해야합니다.TreeViewItem이 한 번 클릭으로 강조 표시되지 않습니다. WPF

보세 명령은 한 번의 클릭으로 잘 작동합니다.

<TreeView ItemsSource="{Binding ElementsTypes}"> 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate> 
       <TextBlock Text="{Binding Name}"> 
        <TextBlock.InputBindings> 
         <MouseBinding Gesture="LeftClick" 
             Command="{Binding ElementsCommand}" 
             CommandParameter="{Binding}" /> 
        </TextBlock.InputBindings> 
       </TextBlock> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
</TreeView> 

답변

1

귀하의 MouseBinding이 (는) 왼쪽 클릭을 "도용"했기 때문입니다. 한 가지 가능한 해결책은 ElementsCommandtrue에 당신의 ViewModel에 IsSelected 속성을 추가하고 설정하는 것입니다 :

<TreeView.ItemContainerStyle> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="IsSelected" Value="{Binding IsSelected}" /> 
     </Style> 
</TreeView.ItemContainerStyle> 


public class MyTreeElement 
{ 
    private bool _IsSelected; 
    public bool IsSelected 
    { 
     get { return _IsSelected; } 
     set 
      { 
       _IsSelected = value; 
       OnPropertyChanged("IsSelected"); 
      } 
    } 
    private void ElementsCommandMethod(object item) 
    { 
     Console.WriteLine("ElementsCommand"); 
     IsSelected = true; 
    } 
} 

당신은 또한 선택 당신의 ViewModel에있는 항목을 알 수 및에서 프로그램 선택을 조작 할 수있을 것입니다 이런 식으로 ViewModel

+0

감사합니다. 완벽하게 작동했습니다. – IBRA