【问题标题】:Make own windows 8 app theme制作自己的 Windows 8 应用主题
【发布时间】:2023-03-11 06:04:01
【问题描述】:

我正在开发一个应用程序,并希望将我自己的风格应用到它上面。 XAML 有一些称为主题目录的东西,我试图将其用于我的主题。 事实证明,windows 有 3 个预定义的主题;浅色、深色和高对比度。 当我将资源目录上的 x:Key 属性设置为包含我想使用的主题而不是 3 个预定义或默认值之一时,它不起作用。有人知道为什么吗?

<ResourceDictionary.ThemeDictionary>
    <ResourceDictionary x:key="Default"> // Does work
        (...)
    </ResourceDictionary>
    <ResourceDictionary x:key="MyOwnThemeKey"> // Does not work
        (...)
    </ResourceDictionary>
</ResourceDictionary.ThemeDictionary>

【问题讨论】:

  • 你能准确地说出你想要什么吗?您的问题是:“我想更改主题”还是“我怎样才能让我的用户可以更改主题”
  • @Aymeric 问题我已经重新写了一遍,如果你有时间请再读一遍。

标签: c# xaml windows-8 microsoft-metro windows-store-apps


【解决方案1】:

来自here

主题词典是一种特殊类型的合并词典,它是 旨在保存因主题而异的资源 用户当前正在他或她的 PC 上使用。例如,“光” 主题可能使用白色画笔,而默认主题可能 使用深色画笔。画笔改变,但否则 使用画笔作为资源的控件的组合可以是 同样,只需引用主题资源即可。

来自here

一个或多个 ResourceDictionary 对象元素。每一个这样的 ResourceDictionary 必须具有 x:Key 属性。那的价值 属性必须是唯一的,并且应该引用已知的主题名称。每个 资源字典及其内容应旨在 为命名资源提供主题值,否则这些资源会被 其他资源。例如,“HighContrast”的主题词典 可能包括对部分或全部画笔或颜色的重新定义 其他风格或过渡资源中使用的关键资源, 为了产生必要的对比度水平,以满足 高对比度的设计要求。

基本上,主题词典旨在修改现有主题,并根据当前操作系统主题进行选择。如果没有该名称的操作系统主题,则无法选择它。

【讨论】:

  • 当这种方式不起作用时,让我的用户能够更改主题的最佳方式是什么?基本上我正在寻找一种用户可以在应用设置中更改强调色的方法。
  • 我认为您可以定义新元素来覆盖主题中定义的元素。我认为这应该足以让您弄清楚:documentation.devexpress.com/#wpf/CustomDocument11220 如果您希望它是全球性的,请将其放入您的 App.xaml 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多