【问题标题】:WPF Themeing of windows background dynamicallyWindows背景动态的WPF主题
【发布时间】:2009-07-11 15:28:41
【问题描述】:

好的,我正在开发一个允许您在运行时切换主题的应用程序。到目前为止,所有控件都很好,什么不是。但是,我的 Window 对象不会应用任何基本项目。这是我的一个资源字典中的 xaml 示例。

<SolidColorBrush x:Key="GrayBrush" Color="Gray" />
<SolidColorBrush x:Key="OrangeBrush" Color="Orange" />

<!-- Window Styles -->
<Style TargetType="{x:Type Window}">
    <Setter Property="Background" Value="{DynamicResource GrayBrush}" />
</Style>

我的主主题在我的 app.xaml 资源列表中也有上述 sn-p。现在,当应用程序启动时,不会应用背景,也不会在运行时更改资源字典。我想我要么遗漏了一些东西,要么就是不起作用。

我使用的是 .net 3.5,我只是使用框架中的标准窗口对象,因此我没有从任何其他基本控件继承。我要做的是不必在窗口对象上指定样式或其他属性,因为我还允许您切换到包含的主题,如 Aero、Luna、Classic 等。

我这辈子都无法让窗口使用该样式。

唯一有效但在切换时不会改变的事情是,如果我设置了我不想做的样式或背景属性。

另外,当我更改主题时,它是这样完成的:

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

字典是根据从 .net 资料或我自己的资料中选择的主题加载的资源字典。这一切似乎都可以正常工作,只是无法让窗口正常工作。

任何帮助将不胜感激。

谢谢。

任何想法。

更新:我真正想要的是一种改变 Window 对象的方法,而无需更改或设置窗口上的任何其他属性。如果我必须向我的应用程序中的所有窗口对象添加样式标签或其他内容,这有点违背了目的。

【问题讨论】:

标签: wpf themes


【解决方案1】:

看看这里...

http://www.codeplex.com/wpfthemes

如果您下载源代码,您会发现他们已经实现了动态主题,而且所有主题都可以免费使用,而且还有一些非常不错的主题。

【讨论】:

  • 我实际上已经经历了这一点以及 wpf 期货中的那个。然而,没有人做我正在寻找的东西。您指定的实际上需要您在表单上设置属性以设置样式。如果我还想使用预构建的打包主题,这将不起作用。我试过了。
猜你喜欢
  • 2018-09-01
  • 2012-04-29
  • 2019-03-06
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
相关资源
最近更新 更多