如何实现在WPF主题化(How to implement theming in wpf)

2019-06-25 16:10发布

我想实现WPF ASP.Net类型的主题。 有用户的各种预定义的主题选择,并且可以切换到另一个主题。

要通过为每个主题和存储所需的风格,键不同的ResourceDictionary实现这个我都试过了。 领取钥匙在所有的主题相同,但它的定义是在每个不同的。

我使用下面的代码来切换主题上点击:

var theme = Application.LoadComponent(uri) as ResourceDictionary;
Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(theme);

在所有页/用户控件/窗口我已经设置静态资源和应用相应的键。 当我切换到另一个主题,它是在UI下一个事件后只适用

如果我更改设置的StaticResource到DynamicResource则立即应用上。

请分享你的想法与静态资源来实现这一目标?

Answer 1:

看看这个问题

WPF和MVVM -更改主题动态

你可以从下面的链接下载预定义的主题

http://wpf.codeplex.com/wikipage?title=WPF%20Themes



Answer 2:

不幸的是,你不能用静态资源实现这一目标。 与静态资源的控制需要切换到另一个主题后重新加载新的资源得以应用。

您可能希望创建功能主题的变化后重新加载当前页面。



文章来源: How to implement theming in wpf