首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并的ResourceDictionary与App.xaml

合并的ResourceDictionary与App.xaml
EN

Stack Overflow用户
提问于 2013-04-03 21:35:42
回答 1查看 6.3K关注 0票数 3

我正在阅读关于ResourceDictionary的文章,并且已经到了一个令人困惑的地步。

似乎每个XAML只能有1个ResourceDictionary。因此,如果我想使用多个,我可以合并ResourceDictionaries。

如果我可以合并字典,那么“全局”风格应该在哪里存在?我可以拥有一个在整个应用程序中保持一致的所有样式的ApplicationResourceDictionary,或者,我可以将这些信息保存到App.xaml文件中。这两个似乎都是有效的选项,但我不知道是不是这样。

这是个人选择,还是一个比另一个更好?将它们保留在ResourceDictionaries中似乎更好,因为所有样式都在一起(在字典中),而不是在XAML页面中拆分一些样式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-04 02:44:23

我们当前的解决方案中包含100+项目。每个人都需要访问一些资源字典,全局资源的主题和统一性等。我为它做的是让资源字典集中在一个项目中,其他人引用,在这种情况下,我们称之为“基础设施”,然后我直接通过他们自己的app.xaml向每个项目提供字典,合并字典,例如;

代码语言:javascript
复制
<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/Our.Client.Infrastructure;component/Resources/Styles/ResDictName1.xaml" />
        <ResourceDictionary Source="/Our.Client.Infrastructure;component/Resources/Styles/ResDictName2.xaml" />
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>

到目前为止效果很好,我让样式全局应用的方法是在我们的一个自定义资源字典的底部指定它们,并从默认的资源字典中删除相同的声明。例如,如果你发现;

代码语言:javascript
复制
<Style BasedOn="{StaticResource DefaultButtonStyle}" TargetType="Button" />

在您的默认CoreStyles.xaml或SdkStyles.xaml中,我只需删除它,并将该声明移到自定义资源字典的底部,并对其进行相应的更改,如下所示;

代码语言:javascript
复制
<Style BasedOn="{StaticResource OurSuperAwesomeCustomNewGlobalButtonStyle}" TargetType="Button" />

瞧..。此后的任何Button都会默认继承我们的自定义样式,而不是原始的默认模板。只有一个或两个资源字典用于整个解决方案的优势一旦你采用它就会变得非常明显。也就是说,假设模板实际上需要在全球范围内可用。如果您使用的模板只适用于某个特定的视图,请明确地将其保留在该视图中,如果没有其他地方需要它,则无需将其保存在其他地方。

希望这能有所帮助。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15788869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档