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"]);