gpt4 book ai didi

wpf - 如何在 WPF 应用程序中应用不同的配色方案

转载 作者:行者123 更新时间:2023-12-04 22:34:10 33 4
gpt4 key购买 nike

有没有办法在运行时替换 WPF 应用程序的所有画笔定义,并且只声明使用它一次的样式?这对于不同的配色方案很有用,但保留相同的 UI 并声明一次。我能找到的所有示例都重复了不同主题文件中的样式 - 这是唯一的方法吗?

小例子:

蓝色.xaml

<SolidColorBrush x:Key="DefaultBackgroundBrush" Color="Blue"/>

黄色.xaml

<SolidColorBrush x:Key="DefaultBackgroundBrush" Color="Yellow"/>

通用.xaml?

<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="{StaticResource DefaultBackgroundBrush}" />
</Style>

最佳答案

在发布问题后自己想通了,通常是这样;)

下面的代码用于测试,所以不要介意它的不性感:

private void MenuItemBlue_Click(object sender, RoutedEventArgs e)
{
ResourceDictionary genericSkin = new ResourceDictionary();
genericSkin.Source = new Uri(@"/Themes/" + "generic" + ".xaml", UriKind.Relative);

ResourceDictionary blueSkin = new ResourceDictionary();
blueSkin.Source = new Uri(@"/Themes/" + "blue" + ".xaml", UriKind.Relative);

Application.Current.Resources.MergedDictionaries.Clear();

Application.Current.Resources.MergedDictionaries.Add(genericSkin);
Application.Current.Resources.MergedDictionaries.Add(blueSkin);
}

并将“generic.xaml”中定义的样式更改为DynamicResource

<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="{DynamicResource defaultColor}" />
</Style>

不过,我们非常欢迎其他建议。

关于wpf - 如何在 WPF 应用程序中应用不同的配色方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3839942/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com