Generic.xaml 有什么特别之处?

14 浏览
0 Comments

Generic.xaml 有什么特别之处?

我一直在试着弄清如何组织我的ResourceDictionary文件以便重复使用和分享给团队的其他成员。

我经常遇到\"Generic.xaml\",但如果我在MSDN上查看Generic.xaml,或者只是在谷歌上搜索,我似乎只能得到提到它的博客文章和论坛问题-我似乎找不到任何真正权威和清晰的资料。

Generic.xaml和MyRandomlyNamedResourceDictionary.xaml有什么区别?看起来,我必须使用Source属性引用存储在库中的ResourceDictionaries。例如:

    

那么Generic.xaml究竟能提供什么优势呢?如果我不想给我的应用程序提供多个\"外观\"(即,如果我只有一个主题),它是否有任何用途?

admin 更改状态以发布 2023年5月20日
0
0 Comments

若要使generic.xaml文件(大小写不敏感)成为特殊文件,必须满足以下两种条件:

  • 它必须位于项目中的Themes子根文件夹中
  • 该程序集必须标记有ThemeInfoAttribute(通常位于AssemblyInfo.cs中)

然后,它将作为应用于控件的任何默认样式的默认查找位置。还要注意,要使样式成为默认样式,必须将其TargetType和x:Key声明为要设置样式的控件类型。

如果您希望将整个主题和主题切换添加到应用程序中,则需要编写一些代码,而此技术仅定义默认资源词典。

0
0 Comments

每个WPF中的控件都有一个默认样式,其中包括控件的默认控件模板。WPF在与控件相同的程序集中的Themes文件夹中查找默认样式的特殊资源字典。默认样式的键由Control.DefaultStyleKey依赖属性提供,其默认值在Control的每个子类中被覆盖。\n\n资源字典的名称取决于当前的Windows主题,例如,在使用Aero主题的Vista上,字典称为Aero.NormalColor.xaml,在使用默认主题的XP上,它是Luna.NormalColor.xaml。如果在主题字典中找不到样式,则会在Generic.xaml中查找,即对于外观不依赖于主题的控件。\n\n这仅适用于您定义的任何自定义控件,即直接或间接从Control派生的类。您可以通过从中派生并在静态构造函数中调用DefaultStyleKeyProperty.OverrideMetadata来更改标准控件的默认样式,但然后必须提供完整的样式,包括ControlTemplate。\n\n请注意,您可以使用ThemeInfo属性告诉WPF在外部程序集中查找默认样式。外部程序集必须命名为..dll,例如,PresententationFramework.Aero.dll。

0