【问题标题】:WPF Themes with custom theme settings具有自定义主题设置的 WPF 主题
【发布时间】:2017-03-24 15:05:39
【问题描述】:

我想在我的应用程序上实现主题支持。我知道如何通过在外部程序集上使用 ResourceDictionaries 并在运行时应用它们来做到这一点,但我想启用使用自定义主题设置和/或调色板的主题。我不知道最好的方法是什么。

我的想法是能够使用这样的标记来声明主题:

<Theme Name="MyTheme" 
       Description="Simple example theme" 
       Icon="MyTheme.ico" 
       Thumbnail="thumbnail.png">
    <Theme.Settings>
        <Setting Key="EnableShadows" Text="Enable theme shadows" Type="{x:Type system:Boolean}" Value="True"/>
    </Theme.Settings>
    <Theme.Resources>
       <ResourceDictionary>
           <ResourceDictionary.MergedDictionaries>
               <ResourceDictionary Source="MyTheme.xaml"/>
           </ResourceDictionary.MergedDictionaries>
       </ResourceDictionary>
    </Theme.Resources>
</Theme>

好吧,这段代码 sn-p 只是它可以完成的一种方式。我的问题是如何在 WPF 中做这样的事情(如何创建一个可以以这种方式用作主题的 Theme 类)。

【问题讨论】:

  • 我设法通过从 ResourceDictionary 类继承来做到这一点。通过合并不同类型的自定义 ResourceDictionaries,创建一棵树,我现在可以在每个字典类型上实现自定义属性,并通过这种方式控制流使用 ThemesManager 类的应用程序字典。这使我能够拥有一个继承自 ResourceDictionary 的 Theme 类,它具有自己的属性(如名称、图标等),并在其中合并了多个 SubTheme 和 ColorTheme 类(也继承自 ResourceDictionary)。

标签: c# .net wpf xaml


【解决方案1】:

WPF 中的主题化是一个非常重要的问题,不会在 stackoverflow 上得到解决...在几个专业组件上花费很多,例如 mahappswpf toolkitapplication 。祝你好运 .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    相关资源
    最近更新 更多