【问题标题】:How can I prevent children of a TreeView's selected item from inheriting its formatting?如何防止 TreeView 的选定项的子项继承其格式?
【发布时间】:2011-12-18 01:05:01
【问题描述】:

我有一个树视图,我需要在其中将仅选定节点的字体设置为粗体。如果该节点没有任何子节点,它可以正常工作。但是如果选择了具有子节点的节点,则子节点也显示为粗体..

使用以下 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>

【问题讨论】:

    标签: wpf xaml treeview styles


    【解决方案1】:

    编辑:您可以只使用 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>
    

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 1970-01-01
      • 2017-05-23
      • 2013-07-14
      • 2017-12-22
      • 2010-09-28
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      相关资源
      最近更新 更多