2017-03-13 17 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が左クリックを「盗んだ」ためです。一つの可能​​な解決策は、あなたのViewModelにIsSelectedプロパティを追加し、ElementsCommandtrueにそれを設定することです:

<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

関連する問題