WPF DynamicResource不更新任何内容

时间:2019-02-26 21:13:36

标签: c# wpf dynamicresource

我在这里遇到了一个问题,但是给出的解决方案没有帮助。 我想通过App全局资源从另一个窗口更改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 };

1 个答案:

答案 0 :(得分:1)

您忘记设置颜色的Alpha值,默认情况下该值为零:

"tsconfig.json"

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

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