TreeViewItem 不会在单击 WPF 时突出显示

TreeViewItem do not get highlighted on Single click 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>

那是因为您的 MouseBinding 是 "stealing" 您的左键单击。一种可能的解决方案是将 IsSelected 属性 添加到您的 ViewModel 并将其设置为 true on 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;
    }
}

这样您还将知道您的 ViewModel 中的哪个项目被选中,并且能够从 ViewModel 中以编程方式操作选择。