简体   繁体   中英

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.

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

You could handle the PreviewMouseLeftButtonDown event for the TreeViewItem :

<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)
{
    //...
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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