WPF:由于只读状态,无法通过代码隐藏更改SolidColorBrush样式

WPF:由于只读状态,无法通过代码隐藏更改SolidColorBrush样式,wpf,styles,Wpf,Styles,所以在窗口内。参考资料我有一个SolidColorBrush: 在单独的文件GridViewColumnHeader.xaml中,我有以下风格: 但出于某种原因,我得到了这个无效操作的例外: 其他信息:无法设置对象“ffdcdc”的属性 因为它处于只读状态 您可以定义另一个笔刷并将其指定给样式的前景,而不是更改资源笔刷 然而,还有另一种方法可以实现你的目标。 首先,您还应该将使用的样式声明为DynamicSource 例如: <ListView VerticalAlignment="Bo

所以在窗口内。参考资料我有一个SolidColorBrush:

在单独的文件GridViewColumnHeader.xaml中,我有以下风格:

但出于某种原因,我得到了这个无效操作的例外:

其他信息:无法设置对象“ffdcdc”的属性 因为它处于只读状态


您可以定义另一个笔刷并将其指定给样式的前景,而不是更改资源笔刷

然而,还有另一种方法可以实现你的目标。

首先,您还应该将使用的样式声明为DynamicSource

例如:

<ListView VerticalAlignment="Bottom" Height="63" IsSynchronizedWithCurrentItem="True">
    <ListView.View>
        <GridView x:Name="test" ColumnHeaderContainerStyle="{DynamicResource ListViewHeaderDefaultStyle}" >
            <GridViewColumn Header="header1"/>
        </GridView>
    </ListView.View>
</ListView>

我尝试Application.Current.Resources[YourResource]=YourNewValue;这一点都不起作用,另一个问题是我的样式使用的是DynamicSource GridViewColumnHeaderForegroundColor,所以如果我定义了另一个样式,我如何设置这个新笔刷?很抱歉,我读过头了,您在Window.Resources中定义了样式。现在应该可以了。
SolidColorBrush solidColorBrush = (SolidColorBrush)this.TryFindResource("GridViewColumnHeaderForegroundColor");
if (solidColorBrush != null)
    solidColorBrush.Color = Colors.Black;
<ListView VerticalAlignment="Bottom" Height="63" IsSynchronizedWithCurrentItem="True">
    <ListView.View>
        <GridView x:Name="test" ColumnHeaderContainerStyle="{DynamicResource ListViewHeaderDefaultStyle}" >
            <GridViewColumn Header="header1"/>
        </GridView>
    </ListView.View>
</ListView>
this.Resources["GridViewColumnHeaderForegroundColor"] = Brushes.Black;