简体   繁体   English

树状视图项目已选中,并且鼠标按钮按下事件未触发

[英]Tree View Item Selected and Mouse button down event not firing

I have created view models for the tree view. 我已经为树视图创建了视图模型。 Also created their bindings. 还创建了它们的绑定。 I created style trigger so that whenever a tree view item is selected, its background is changed. 我创建了样式触发器,以便无论何时选择树视图项目,都会更改其背景。 But the background does not change.I handled the item selected and left mouse down events of tree view item to see if the item is selected or not. 但是背景并没有改变。我处理了选中的项目,并在树状视图项目中单击鼠标左键事件以查看是否选中了该项目。 But both the events do not fire. 但是这两个事件都不会触发。 Below is the XAML. 以下是XAML。

<TreeView Grid.Row="0" x:Name="TreeViewLocalSystem"  BorderBrush="Transparent" Panel.ZIndex="0">
     <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="{StaticResource TextBoxBackgroundColor}"></Setter>
                </Trigger>
                <Trigger Property="IsSelected" Value="False">
                    <Setter Property="Background" Value="Transparent"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TreeView.ItemContainerStyle>
    <TreeView.Resources>
        <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}"   DataType="{x:Type local:LocalTreeViewItemModel}">
            <TreeViewItem Header="{Binding Path=Text}"  Selected="TreeViewItem_Selected" HorizontalAlignment="Left" FontSize="{StaticResource MediumFontSize}" MouseLeftButtonDown="TreeViewItem_MouseLeftButtonDown" />
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

What is it that I am doing wrong? 我做错了什么?

Edit: Another thing that I noticed is that MouseDown event is fired when I do right click but does not fire on left mouse button click. 编辑:我注意到的另一件事是,当我单击鼠标右键时会触发MouseDown事件,但在单击鼠标左键时不会触发。

You could handle the PreviewMouseLeftButtonDown event for the TreeViewItem : 您可以为TreeViewItem处理PreviewMouseLeftButtonDown事件:

<TreeView Grid.Row="0" x:Name="TreeViewLocalSystem"  BorderBrush="Transparent" Panel.ZIndex="0">
    <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="TreeViewLocalSystem_PreviewMouseLeftButtonDown" />
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="{StaticResource TextBoxBackgroundColor}"></Setter>
                </Trigger>
                <Trigger Property="IsSelected" Value="False">
                    <Setter Property="Background" Value="Transparent"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TreeView.ItemContainerStyle>
    <TreeView.Resources>
        <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}" DataType="{x:Type local:LocalTreeViewItemModel}">
            <TextBlock Text="{Binding Path=Text}" HorizontalAlignment="Left" FontSize="{StaticResource MediumFontSize}" />
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

private void TreeViewLocalSystem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    //...
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM