是否可以将一个资源字典添加到另一个资源字典中? 谢谢你的帮助。
答案 0 :(得分:21)
在Dictionary2.xaml中定义MergedDictionaries(在打开ResourceDictionary标记之后):
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Path/to/Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
有一个问题:每次合并字典时,您都可以有效地创建合并字典的副本。并且它是递归的 - 如果您有Dict3.xaml和Dict4.xaml都加载Dictionary2.xaml,您将创建三个Dictionary1.xaml实例
解决方案是SharedResourceDictionary。本教程中的实现应视为一个起点,可能需要进行一定程度的调整 - 具体取决于使用场景。谷歌“wpf SharedResourceDictionary”提供了一些问题和解决方案。
的回答XAMeLi答案 1 :(得分:4)
直接来自我正在研究的草图流项目的代码片段展示了如何在xaml中合并资源字典:
<Application.Resources>
<!-- Resources scoped at the Application level should be defined here. -->
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Microsoft.Expression.Prototyping.SketchControls;component/ScrollViewerStyles.xaml"/>
<ResourceDictionary Source="/[ProjectABC];component/[fileXYZ].xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
这表示将两个额外的资源字典合并到另一个资源字典中。
(请注意,如果您在多个地方定义了默认样式,则顺序会变得很重要,因为它们会相互覆盖)
答案 2 :(得分:1)
类似的东西:
ResourceDictionary resources = new ResourceDictionary();
resources.Source = new Uri("/MyModule;component/MyModule.xaml",
UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries.Add(resources);
你可能正在寻找什么。我们在Prism Modules中使用这样的代码。
答案 3 :(得分:0)
如果没有更多背景信息,很难给出具体的答案。 以下是合并资源字典的一些可能相关的资源: