2017-03-13 1 views
1

Ich habe einen einfachen Baum, es funktioniert gut, aber es wird nicht auf Einzelklick hervorgehoben, muss der Benutzer doppelt klicken.TreeViewItem werden nicht markiert auf Einzelklick WPF

Die Befehle, die daran gebunden sind, funktionieren gut mit einem einzigen Klick.

<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> 

Antwort

1

Das ist, weil Ihr MouseBinding ist Ihr linker Klick „zu stehlen“. Eine mögliche Lösung wäre IsSelected Eigenschaft auf Ihr Ansichtsmodell hinzuzufügen und setzen Sie sich auf true auf ElementsCommand:

<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; 
    } 
} 

diese Weise werden Sie auch, welche Artikel in Ihrem Viewmodel wissen ausgewählt und in der Lage, um die Auswahl zu manipulieren programmatisch aus das ViewModel.

+0

Danke, es hat perfekt funktioniert – IBRA

Verwandte Themen