【问题标题】:How to implement theming in wpf如何在wpf中实现主题
【发布时间】:2012-06-22 05:21:12
【问题描述】:

我想在 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 实现这一目标的想法?

【问题讨论】:

    标签: wpf themes resourcedictionary staticresource


    【解决方案1】:

    看看问题

    WPF and MVVM - changing themes dynamically

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

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

    【讨论】:

    • 感谢您的回复,但它不适用于 StaticResource。
    【解决方案2】:

    很遗憾,您无法使用 StaticResource 实现此目的。带有 StaticResource needs to be reloaded after switching to another Theme 的控件,用于应用新资源。

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

    【讨论】:

      猜你喜欢
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 2017-06-22
      • 2021-01-31
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多