将样式应用于所有 TreeViewItem

Posted

技术标签:

【中文标题】将样式应用于所有 TreeViewItem【英文标题】:Apply style to all TreeViewItem 【发布时间】:2010-11-24 21:27:38 【问题描述】:

嗨,我遇到的问题是我有多个 TreeView 控件,每个 TreeView 都有自己的 TreeViewItem 样式, 设置它

TreeView ItemContainerStyle="StaticResource Style1"

将只设置根元素而不是所有子元素,如何将样式应用于 TreeView 中的所有子元素

【问题讨论】:

【参考方案1】:

有几种方法可以做到这一点:

您可以将您的样式设为所有 TreeViewItems 的默认样式:

<Style TargetType="x:Type TreeViewItem">
...
</Style>

不同之处在于您没有设置 x:Key 属性,而是设置了 TargetType 属性。在这种情况下,您不需要在 TreeView 上设置 ItemContainerStyle。


您还可以将您的样式设置为所有 TreeViewItems 的默认样式,但只能在您的 TreeView 中:
<TreeView>
    <TreeView.Resources>
        <Style TargetType="x:Type TreeViewItem" BasedOn="StaticResource Style1"/>
    </TreeView.Resources>
</TreeView>

在这种情况下,您也不需要在 TreeView 上设置 ItemContainerStyle。


你也可以如下改变你的风格

<Style x:Key="Style1" TargetType="x:Type TreeViewItem">
    <Setter Property="ItemContainerStyle" Value="StaticResource Style1"/>
</Style>

在这种情况下,您仍然需要在 TreeView 上设置 ItemContainerStyle。

【讨论】:

我认为值得一提的是 DataTemplates。谁知道呢,也许 Chandimal 想改变 TreeViewItem 的内容,而不是容器样式,但没有意识到这一点......只是一个想法:)。 谢谢!,这就是我要找的!关于更改背景/选择颜色等。

以上是关于将样式应用于所有 TreeViewItem的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖全局样式(没有 x:Key),或者将命名样式应用于所有以类型为目标的控件?

CSS:将 CSS 样式应用于除 Material Angular 之外的所有内容

CSS 用于将常规样式应用于所有输入类型按钮

我可以将样式应用于 CSS 或 Sass 中的所有伪选择器吗?

:last-child 将样式应用于所有元素

将 :hover 样式应用于具有相同类的所有元素