繁体   English   中英

WPF TreeView如何为treeViewItem的IsSelected触发

[英]WPF TreeView How to make trigger for IsSelected of treeViewItem

以下代码是treeview:

   <TreeView BorderThickness="1,1,1,1" BorderBrush="#ffcccccc"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  
              ItemTemplate="{StaticResource itemTypeTreeViewTemplate}"
              ItemsSource="{Binding ItemTypes}"
              ItemContainerStyle="{StaticResource treeViewItemStyle}"/>

而且我设置了itemTemplate来设置项目的绑定。 然后设置ItemContainerStyle更改IsSelected样式:

  <Style x:Key="treeViewItemStyle" TargetType="TreeViewItem">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="LightBlue" />
            </Trigger>
        </Style.Triggers>
    </Style>

    <HierarchicalDataTemplate x:Key="itemTypeTreeViewTemplate" 
                              ItemsSource="{Binding Child}">
                <DockPanel Margin="0,5,0,5">
                    <Button VerticalAlignment="Center"
                        x:Name="btn1" Width="25"
                        Visibility="{Binding Path=IsMouseOver,RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BooleanToVisibilityConverter }}"
                        Content="U" DockPanel.Dock="Right" cal:Message.Attach="[Event Click] = [Action EditItemType($dataContext)]" 
                        Style="{StaticResource ButtonStyle1}" />
                    <TextBlock Margin="0,2,0,2" VerticalAlignment="Center" Text="{Binding ItemTypeName}" Foreground="#FF2e8bcc" FontSize="10" FontFamily="微软雅黑" />
                </DockPanel>    
    </HierarchicalDataTemplate>

但是isSelected样式不起作用。 有人找到钥匙了吗?

代替使用样式触发器,您应该覆盖突出显示状态的颜色键。 这是代码:

<Style x:Key="treeViewItemStyle" TargetType="TreeViewItem">
    <!--<Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="LightBlue" />
        </Trigger>
    </Style.Triggers>--><!--Remove Style.Trigger block-->
    <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                   Color="LightBlue"/>
        </Style.Resources>
</Style>

希望这可以帮助。 此控件的其他键是:

  • HighlightBrushKey背景。 (选中时聚焦)
  • HighlightTextBrushKey前景。
  • InactiveSelectionHighlightBrushKey普通背景。
  • InactiveSelectionHighlightTextBrushKey普通前景。

暂无
暂无

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

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