【发布时间】:2009-10-16 13:18:08
【问题描述】:
当我使用“编辑副本”在不修改它(只是创建 if 的本地副本)的情况下覆盖标准 WPF 控件的默认样式/控件模板时,这是否已经打破了主题一些场景?换句话说,不同的主题是否为标准控件提供不同的控件模板和/或样式定义?如何确保我的样式/控件模板尊重主题?
【问题讨论】:
标签: wpf themes controltemplate
当我使用“编辑副本”在不修改它(只是创建 if 的本地副本)的情况下覆盖标准 WPF 控件的默认样式/控件模板时,这是否已经打破了主题一些场景?换句话说,不同的主题是否为标准控件提供不同的控件模板和/或样式定义?如何确保我的样式/控件模板尊重主题?
【问题讨论】:
标签: wpf themes controltemplate
是的,这会破坏主题;
是的,不同的主题提供不同的控件样式。如果您有 MS Blend,您可以在 Blend 的文件夹中找到它们(例如,在 C:\Program Files\Microsoft Expression\Blend 3\SystemThemes\Wpf 中)
为了尊重主题,您还应该为控件的每个主题创建一种样式。在自定义控件和主题支持上有many resources。顺便提一个:WPF: Changing control style based on the system theme
【讨论】:
作为开发人员,您希望根据控件的功能来编写控件。到处使用默认控件样式。然后让专业人士处理它的图形设计方面。如果您覆盖控件的 ControlTemplate,则您已经忙于主题化了。
如果您对 ControlTemplates 不屑一顾,请尝试使用标准方法,否则一旦图形设计师开始处理应用程序,他/她就会对您发誓:)
主题是针对单个控件并重新定义其外观的样式集合。您为其提供了 ControlTemplate 的任何控件都不会应用它或与主题包不一致(取决于您是通过 x:Name 还是通过 Type 访问主题)
如果您覆盖 DataTemplates,那么您就可以了。您可以安全地执行此操作,而不必担心主题干扰。
【讨论】: