【发布时间】:2026-01-15 06:00:01
【问题描述】:
想象一个 UWP 类库,其中包含多个具有自定义逻辑的用户控件。自定义控件可能是开源的,人们可以使用它创建自己的应用程序。
-Controls
---MyTextBox
---MyButton
---and so on
这些用户控件的默认样式可以通过用户控件的 xaml 中的显式样式内联来完成。我对此进行了测试。但它不是很灵活。人们可能希望对其应用自己的样式。
想要变得更复杂,并创建了几个 ResourceDictionaries。可以说简化一下:
-Styles
--MyTextBoxDictionary.xaml
--MyButtonDictionary.xaml
暂时这些只是文件。什么都不知道。如果我想使用它们,我在 * 上学到了,我需要一个文件“Themes/Generic.xaml”(记住我在一个 UWP 类库项目中,需要保留这个先决条件)。 在这里了解到,我需要像这样使用 MergedDictionaries 加载该文件中的字典:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyTextBoxDictionary.xaml"/>
<ResourceDictionary Source="MyButtonDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
因为要加载的字典位于名为“Styles”的文件夹中,所以我需要为来自不同文件夹的同一个程序集执行类似 PACK URIS 的操作。 不工作。按钮仍然没有样式。 所以我将样式定义直接移动到“Themes/Generic.xaml”中,只是为了测试。 不工作。按钮仍然没有样式。
有几个问题:
- 如何使用位于单独文件夹中的类库项目中的多个字典文件来设置自定义用户控件的样式?
- 如果以上方法都不可行,我还有哪些其他方法?
- 使用 ThemedStyles 是否也能做到这一点?
- 如何让消费应用覆盖我的“默认”样式?我对默认样式使用隐式样式并为覆盖样式使用显式的唯一方法不是吗?还有其他方法吗?
【问题讨论】: