我在app.xaml
的资源上有这个 <Color x:Key="myColor">#1ba1e2</Color>
在我的WPF项目中,我在我的按钮上使用它:
void win_Loaded(object sender, RoutedEventArgs e)
{
btn.Background = (SolidColorBrush)Application.Current.Resources["mySolidColor"];
}
当我更改&#34; mySolidColor&#34;的资源时,按钮不是使用新颜色
void changeColor(Colors color)
{
Application.Current.Resources["mySolidColor"] = new SolidColorBrush(color);
}
请考虑添加超过1000个像Button这样的对象,你正在使用Resource作为颜色,我正在寻找一种颜色变化,过去的对象获得新颜色的方法,这可能吗?
答案 0 :(得分:0)
您可以创建自定义样式以定位您需要的所有对象:按钮
<Color x:Key="YourColorNameKey">#1ba1e2</Color>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="{DynamicResource YourColorNameKey}"/>
</Style>
答案 1 :(得分:0)
我不知道你的代码所以这只是你可以做的一个例子:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myResourcePath1"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<Style TargetType="{x:Type Button}" x:Key="myButtonStyle">
<Setter Property="Background" Value ="{DynamicResource keyOfMyFavouriteColor}"/>
</Style>
当然这需要您在资源文件中编写所有纯色画笔(如果您定义了大量颜色和模板,则最好选择)。您可以使用这种方法轻松设置所有控件的样式,无论您有500个按钮,它们都具有相同的外观。