当前位置 : 主页 > 手机开发 > 其它 >

wpf – 如何防止TreeView所选项目的子项继承其格式?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我有一个树视图,我需要将所选节点的字体设置为粗体..如果节点没有任何子节点,它可以正常工作.但是如果选择了具有子节点的节点,则子节点也显示为粗体. 使用以下XAML: TreeView.ItemC
我有一个树视图,我需要将所选节点的字体设置为粗体..如果节点没有任何子节点,它可以正常工作.但是如果选择了具有子节点的节点,则子节点也显示为粗体.

使用以下XAML:

<TreeView.ItemContainerStyle>
 <Style TargetType="TreeViewItem">
  <Style.Triggers>
   <Trigger Property="IsSelected" Value="True">
    <Setter Property="FontWeight" Value="Bold"></Setter>
   </Trigger>
  </Style.Triggers>
 </Style>
</TreeView.ItemContainerStyle>
编辑:您可以使用setter来阻止继承:

<Style TargetType="TreeViewItem">
  <!-- This has precedence over inheritance -->
  <Setter Property="FontWeight" Value="Normal"/>
  <Style.Triggers>
   <Trigger Property="IsSelected" Value="True">
    <Setter Property="FontWeight" Value="Bold"></Setter>
   </Trigger>
  </Style.Triggers>
 </Style>

或者您可以将此逻辑移动到数据模板中,因此不会继承该逻辑,例如

<TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Items}">
        <TextBlock Text="{Binding Name}">
            <TextBlock.Style>
                <Style TargetType="TextBlock">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=TreeViewItem}}"
                                    Value="True">
                                    <Setter Property="FontWeight" Value="Bold"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>
网友评论