Выбранный элемент представления дерева и событие нажатия кнопки мыши не срабатывает

Я создал модели представления для древовидного представления. Также создали свои привязки. Я создал триггер стиля, чтобы всякий раз, когда выбирается элемент древовидного представления, его фон менялся. Но фон не меняется. Я обрабатывал выбранный элемент и оставлял события мыши в виде дерева, чтобы увидеть, выбран ли элемент или нет. Но оба события не срабатывают. Ниже приведен 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>

Что я делаю неправильно?

Редактировать: Еще одна вещь, которую я заметил, заключается в том, что событие MouseDown запускается, когда я щелкаю правой кнопкой мыши, но не срабатывает при щелчке левой кнопкой мыши.


person V K    schedule 23.10.2017    source источник


Ответы (1)


Вы можете обработать событие PreviewMouseLeftButtonDown для 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)
{
    //...
}
person mm8    schedule 23.10.2017