【问题标题】:How to set ItemContainerStyle only for the first level of TreeView?如何只为 TreeView 的第一级设置 ItemContainerStyle?
【发布时间】:2012-12-23 23:15:39
【问题描述】:

我只想为第一级的项目更改ItemContainerStyle。并为更深层次保留默认样式。有可能吗?

【问题讨论】:

    标签: wpf treeview wpf-controls itemcontainerstyle


    【解决方案1】:

    您应该使用StyleTriggers 并测试项目是否是第一个元素。 这段代码只是一个想法:

    <Style.Triggers>
                    <Trigger Property="IsFirst" Value="True">
                        <Setter Property="Color" Value="Red" />
                    </Trigger>
    

    【讨论】:

      【解决方案2】:

      是的,您将创建一个自定义StyleSelector,它可以根据您决定的任何标准选择不同的样式。在您的情况下,您需要检查哪个ItemsControl 拥有该容器(如在TreeView 中,每个TreeViewItem 是一个ItemsControl,并拥有它的孩子)。

      public class TreeViewFirstItemStyleSelector : StyleSelector
      {
          public override Style SelectStyle(object item, DependencyObject container)
          {
              var element = container as TreeViewItem;
              if (element != null && ItemsControl.GetItemsOwner(element) is TreeView)
                  return element.FindResource("customStyle") as Style;
      
              return null;
          }
      }
      

      然后您可以在 TreeView 的 ItemContainerStyleSelector 属性上设置它。

      【讨论】:

      • 你的意思是 DataTemplate 但我问的是 ItemContainerStyle =)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      相关资源
      最近更新 更多