【问题标题】:Bind column header visibility without losing global style在不丢失全局样式的情况下绑定列标题可见性
【发布时间】:2012-04-25 15:05:24
【问题描述】:

我想将 wpf 列表视图的列标题可见性绑定到依赖属性,而不会丢失我使用的全局样式(表达式黑暗)。

我定义了一种风格:

<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
   <Setter Property="Visibility" Value="{Binding ColumnHeaderVisibility}" />
</Style>

然后我这样应用它:

<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">

我正在使用表达黑暗主题。它是通过 MergedDictionaries 导入的,可以在运行时更改。

当列标题不可见时一切正常。但是当它可见时,它会以默认窗口样式显示,因为设置 ColumnHeaderContainerStyle 会覆盖表达式深色样式。

在原始样式上使用“BasedOn”是不可行的,因为由于需要在运行时更改样式,所有资源都是动态的。 BasedOn 仅适用于静态资源,不允许在运行时更改。

我还能做什么?

【问题讨论】:

    标签: c# wpf listview styles


    【解决方案1】:

    不确定这是否可行,但您可以尝试将样式基于默认样式。

    <Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}"  BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
       <Setter Property="Visibility" Value="{Binding ColumnHeaderVisibility}" />
    </Style>
    

    【讨论】:

    • 试过这个。该样式不会从默认样式继承(可能是因为它被引用为静态资源,并且在尚未设置样式的编译期间被解析)。
    猜你喜欢
    • 1970-01-01
    • 2018-11-08
    • 2019-12-28
    • 2014-03-12
    • 2019-10-30
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多