WPF - 如何通过更改资源来更改按钮颜色

时间:2017-11-10 14:37:21

标签: wpf colors resources

我在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作为颜色,我正在寻找一种颜色变化,过去的对象获得新颜色的方法,这可能吗?

2 个答案:

答案 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个按钮,它们都具有相同的外观。