Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF DynamicSource不更新任何内容_C#_Wpf_Dynamicresource - Fatal编程技术网

C# WPF DynamicSource不更新任何内容

C# WPF DynamicSource不更新任何内容,c#,wpf,dynamicresource,C#,Wpf,Dynamicresource,这里有人问我一个问题,但给出的解决方案没有帮助。 我想通过应用程序全局资源从另一个窗口更改主窗口网格的背景色。问题是,如果我动态地更改backBrush,什么也不会发生。而且颜色最初是透明的。我尝试了在资源中设置值的不同方法,比如Application.Current.resources[“key”]=new_value和 MainGrid.SetResourceReference(Grid.BackgroundProperty,“key”)但没有任何帮助 我做错了什么 应用程序资源如下所示:

这里有人问我一个问题,但给出的解决方案没有帮助。 我想通过应用程序全局资源从另一个窗口更改主窗口网格的背景色。问题是,如果我动态地更改
backBrush
,什么也不会发生。而且颜色最初是透明的。我尝试了在资源中设置值的不同方法,比如
Application.Current.resources[“key”]=new_value
MainGrid.SetResourceReference(Grid.BackgroundProperty,“key”)
但没有任何帮助

我做错了什么

应用程序资源如下所示:

我也尝试过这样设置颜色:


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

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

将网格的背景绑定到视图模型属性。绑定也不起作用。绑定的背景色始终为空,并且在使用笔刷时不会更改changed@Clemens此外,如果我将DynamicSource更改为StaticResource,颜色仍将保持透明。这意味着具有更改通知的Brush类型的视图模型属性,例如INotifyPropertyChanged接口的PropertyChanged事件。像
Background=“{Binding MyBackgroundBrush}”一样绑定它。
我做了更改,所以现在DynamicResource在内部工作,但屏幕上没有任何更改:^(新代码:
,而backcode看起来像
((SolidColorBrush)Resources[“backBrush]”)。Color=(Color)Application.Current.Resources[“backColor”];
<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 };
<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"]);