首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Generic.xaml有什么特别之处?

Generic.xaml有什么特别之处?
EN

Stack Overflow用户
提问于 2009-08-04 17:30:54
回答 1查看 55.9K关注 0票数 165

我一直在试图弄清楚如何组织我的ResourceDictionary文件,以便重用并与我的团队其他成员共享。

我不断遇到" Generic.xaml ",但是如果我在Generic.xaml上查找MSDN,或者只是在谷歌上搜索,我似乎只得到碰巧提到它的博客帖子和论坛问题--我似乎找不到任何真正权威和清晰的东西。

Generic.xaml和MyRandomlyNamedResourceDictionary.xaml有什么区别?不管是哪种情况,我都必须使用Source属性引用存储在库中的ResourceDictionaries。例如,:

<Application.Resources>
    <ResourceDictionary
        Source="/CommonLibraryWpfThemes;component/Themes/Generic.xaml"
</Application.Resources>

那么Generic.xaml到底有什么优势呢?如果我不想给我的应用程序提供多个“外观”(例如,如果我只有一个主题),这有什么意义吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-05 10:15:26

WPF中的每个控件都有一个默认样式,该样式提供控件的默认ControlTemplate。WPF在控件所在程序集中的Themes文件夹中的特殊资源字典中查找默认样式。默认样式的键由Control.DefaultStyleKey依赖属性提供,该属性的默认值在控件的每个子类中被重写。

资源字典的名称取决于当前的Windows主题,例如,在使用Aero主题的Vista上,字典被称为Aero.NormalColor.xaml,在使用默认主题的XP上,它是Luna.NormalColor.xaml。如果在主题字典中找不到该样式,它将在Generic.xaml中查找外观不依赖于主题的控件。

这只适用于您定义的任何自定义控件,即直接或间接从Control派生的类。您可以通过从标准控件派生并在静态构造函数中调用DefaultStyleKeyProperty.OverrideMetadata来更改标准控件的默认样式,但随后必须提供包括ControlTemplate在内的完整样式。

请注意,您可以使用ThemeInfo属性告诉WPF在外部程序集中查找默认样式。外部程序集必须命名为<YourAssembly>.<ThemeName>.dll,例如PresententationFramework.Aero.dll。

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

https://stackoverflow.com/questions/1228875

复制
相关文章

相似问题

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