2017-03-13 3 views
1

J'ai un arbre simple, cela fonctionne très bien, mais il n'est pas mis en évidence sur un seul clic, l'utilisateur doit double-cliquer.TreeViewItem ne sont pas mis en évidence sur un seul clic WPF

Les commandes liées fonctionnent correctement en un seul clic.

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

Répondre

1

C'est parce que votre MouseBinding est « voler » votre clic gauche. Une solution possible serait d'ajouter IsSelected propriété à votre ViewModel et le mettre à true sur 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; 
    } 
} 

De cette façon, vous saurez aussi quel élément dans votre ViewModel est sélectionné et sera en mesure de manipuler la sélection par programmation à partir le ViewModel.

+0

Merci, ça a fonctionné parfaitement – IBRA