绑定列标题可见性而不会丢失全局样式

时间:2012-04-25 15:05:25

标签: c# wpf listview styles

我希望将wpf listview的列标题可见性绑定到依赖项属性,而不会丢失我使用的全局样式(表达式为暗)。

我定义了一种风格:

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

然后我像这样应用它:

<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">

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

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

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

我还能做什么?

1 个答案:

答案 0 :(得分:1)

不确定这是否有效,但您可以尝试在默认样式上设置样式。

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