从外部文件或程序集加载 WPF 样式或其他静态资源
Posted
技术标签:
【中文标题】从外部文件或程序集加载 WPF 样式或其他静态资源【英文标题】:Load WPF styles or other Static Resources from an external file or assembly 【发布时间】:2010-10-16 22:36:18 【问题描述】:我有几个 WPF 应用程序,我希望我的所有样式都在一个共享程序集中,而不是在每个应用程序中单独声明它们。
我正在寻找一种方法,这样我就不必更改现有应用程序中的所有Style="StaticResource BlahBlah"
;我只是想添加对这个样式程序集的引用,并从当前应用程序中删除它,所以它是从程序集中获取的。
有什么办法吗?
【问题讨论】:
【参考方案1】:引用外部 ResourceDictionary(XAML 文件):
<Application.Resources>
<ResourceDictionary Source="MyResources.xaml" />
</Application.Resources>
引用外部资源字典 (DLL):
<Application.Resources>
<ResourceDictionary Source="/MyExternalAssembly;component/MyResources.xaml" />
</Application.Resources>
【讨论】:
但是您能说一下我们如何覆盖其他程序集中的资源 xaml 文件中存在的样式吗?例如:设置了 Foreground 属性的样式是默认样式(没有任何 x:Key)。然后我只想更改背景属性。所以我使用了BaseOn,但它不起作用。 :( @amkh,一旦将该样式导入范围,您就可以重新声明并覆盖它,在高范围级别创建一个新样式,设置为BasedOn
到 StaticResource x:Type TextBox
(用适当的替换 TextBox类型。
非常感谢。我的错误是我在使用 BasedOn 时在错误的位置创建了样式。
如果将使用该资源的 UserControl 位于类库项目中并且没有 App.xaml 怎么办?
@JoanComasFdz 您可以在任何地方引用该资源字典。您甚至可以将其添加到用户控制资源中。但我想也许你可以在Themes\Generic.xaml
中引用它,我没有尝试过,但它可能会起作用。以上是关于从外部文件或程序集加载 WPF 样式或其他静态资源的主要内容,如果未能解决你的问题,请参考以下文章