代码之家  ›  专栏  ›  技术社区  ›  Joshua Cauble

动态Windows背景的WPF主题化

  •  1
  • Joshua Cauble  · 技术社区  · 16 年前

    好的,我正在开发一个允许您在运行时切换主题的应用程序。到目前为止,所有的控制都很好。但是,我的窗口对象不会应用任何基本项。下面是我的一个资源字典中的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资源列表中也有上述片段。现在,当应用程序启动时,不会应用背景,也不会在运行时更改资源字典。我想我要么错过了什么,要么就是没用。

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

    我只是不能让我的生活窗口使用的风格。

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

    另外,当我改变主题时,这是如何做到的:

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

    字典是一个资源字典,根据从.NET材料或我自己选择的主题加载。这一切看起来都很好,只是无法让窗口工作。

    任何帮助都将不胜感激。

    谢谢。

    任何想法。

    更新:我真正想要的是窗口对象的更改方式,而不必更改或设置窗口上的任何其他属性。如果我必须添加一个样式标签或者不添加到我的应用程序中的所有窗口对象中,这有点破坏了目标。

    1 回复  |  直到 15 年前
        1
  •  -1
  •   Andy Clarke    16 年前

    看看这里……

    http://www.codeplex.com/wpfthemes

    如果你下载源代码,你会发现它们已经实现了动态主题,而且所有的主题都是免费的,有一些非常好的主题。