c# - 在 UWP 类库中设置用户控件的样式并在使用应用程序中覆盖它
问题描述
想象一个 UWP 类库,其中包含多个具有自定义逻辑的用户控件。自定义控件可能是开源的,人们可以使用它创建自己的应用程序。
-Controls
---MyTextBox
---MyButton
---and so on
这些用户控件的默认样式可以通过用户控件的 xaml 中的显式样式内联来完成。我对此进行了测试。但它不是很灵活。人们可能希望对其应用自己的样式。
想要变得更复杂并创建了几个 ResourceDictionaries。让我们说简化它:
-Styles
--MyTextBoxDictionary.xaml
--MyButtonDictionary.xaml
暂时这些只是文件。什么都不知道。如果我想使用它们,我在 stackoverflow 上学到了,我需要一个文件“Themes/Generic.xaml”(记住我在一个 UWP 类库项目中,需要保留这个先决条件)。在这里了解到,我需要像这样使用 MergedDictionaries 加载该文件中的字典:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyTextBoxDictionary.xaml"/>
<ResourceDictionary Source="MyButtonDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
因为我要加载的字典位于一个名为“Styles”的文件夹中,所以我需要对来自不同文件夹的同一个程序集执行PACK URIS之类的操作。不工作。按钮仍然没有样式。所以我将样式定义直接移动到“Themes/Generic.xaml”中,只是为了测试。不工作。按钮仍然没有样式。
所以有几个问题:
- 如何在位于单独文件夹中的类库项目中使用多个字典文件来设置自定义用户控件的样式?
- 如果上述方法不可行,我还有哪些其他方法?
- 这甚至可以使用 ThemedStyles 吗?
- 如何让消费应用覆盖我的“默认”样式?我对默认样式使用隐式样式并为覆盖样式使用显式的唯一方法不是吗?还有其他方法吗?
解决方案
您可以像这样将 ResourceDictionary 添加到您的 Themes/Generic.xaml 文件中
<ResourceDictionary Source="/MyProject.Name/Styles/MyTextBoxDictionary.xaml" />
您可以使用“属性”窗格来设置源,而不必知道确切的语法。为此,您可以输入以下内容
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary />
</ResourceDictionary.MergedDictionaries>
推荐阅读
- visual-studio - 自代码签名是否提供任何保护?
- python - 如何解决 django TemplateDoesNotExist
- ios - AutoLayout - 扩展标签但 xib 视图未扩展 Swift
- python - 在 Firefox 中使用 Python 中的 Selenium,driver.close() 需要一秒钟才能执行
- javascript - 使用 React 动态更改按钮颜色
- python - 带约束的 Python 类实例化
- php - 我将如何编写一个可以分为 5 个等长的 html 列表的 mysql 查询
- excel - 用于将月份识别为特定年份的一部分的 Excel 公式
- java - 如何使用 Google Play 应用程序包中的 Java 按需加载 Android 资产包?
- r - Stat_compare_means 组内和组间