WPF DynamicResource 不更新任何东西

WPF DynamicResource does not update anything

我在这里提出了一个问题,但给出的解决方案没有帮助。 我想通过 App 全局资源从另一个 window 更改 MainWindow Grid 的背景颜色。问题是,当我动态更改 backBrush 时,什么也没有发生。而且颜色最初是透明的。我尝试了不同的方法来设置资源的价值,比如 Application.Current.Resources["key"] = new_valueMainGrid.SetResourceReference(Grid.BackgroundProperty, "key") 但没有任何帮助。

我做错了什么?

应用程序资源如下所示:

<Application.Resources>
    <Color x:Key="backColor" R="255" G="0" B="255"/>
</Application.Resources>

MainWindow有问题的部分:

<Window.Resources>
        <SolidColorBrush x:Key="backBrush" Color="{DynamicResource backColor}"/>
    </Window.Resources>

    <Grid
        Name="MainGrid"
        Background="{DynamicResource backBrush}">

代码,对应颜色变化:

this.Resources.Remove("backBrush");
this.Resources.Add("backBrush", 
                    new SolidColorBrush { Color = 
                        (Color)Application.Current.Resources["backColor"] });
MainGrid.SetResourceReference(Grid.BackgroundProperty, "backBrush");

我也试过这样设置颜色:

Color newColor = (Color)Application.Current.Resources["backColor"];
Application.Current.Resources["backBrush"] = new SolidColorBrush { Color = newColor };

您忘记设置颜色的 alpha 值,默认为零:

<Application.Resources>
    <Color x:Key="backColor" R="255" G="0" B="255" A="255"/>
</Application.Resources>

现在您只需将动态画笔资源更改为

Resources["backBrush"] = new SolidColorBrush(
    (Color)Application.Current.Resources["backColor"]);