4

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

为了实现这一点,我尝试为每个主题创建不同的资源字典并使用键存储所需的样式。所有主题的键集合都是相同的,但每个主题的定义不同。

我正在使用以下代码在点击时切换主题:

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

在所有页面/用户控件/窗口中,我设置了 StaticResource 并应用了适当的键。当我切换到另一个主题时,它仅在 UI 上的下一个事件之后应用

如果我将更改 StaticResource 设置为 DynamicResource 然后它会立即应用。

请分享您使用 StaticResource 实现这一目标的想法?

4

2 回答 2

0

看看这个问题

WPF 和 MVVM - 动态更改主题

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

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

于 2012-06-22T06:18:14.863 回答
0

不幸的是,您无法使用 StaticResource 实现此目的。切换到另一个主题后,需要重新加载具有 StaticResource 的控件才能应用新资源。

您可能希望创建功能以在更改主题后重新加载当前页面。

于 2017-09-30T08:24:17.927 回答