【问题标题】:Does overriding default style/controltemplates break theming?覆盖默认样式/控件模板是否会破坏主题?
【发布时间】:2009-10-16 13:18:08
【问题描述】:

当我使用“编辑副本”在不修改它(只是创建 if 的本地副本)的情况下覆盖标准 WPF 控件的默认样式/控件模板时,这是否已经打破了主题一些场景?换句话说,不同的主题是否为标准控件提供不同的控件模板和/或样式定义?如何确保我的样式/控件模板尊重主题?

【问题讨论】:

    标签: wpf themes controltemplate


    【解决方案1】:

    是的,这会破坏主题;

    是的,不同的主题提供不同的控件样式。如果您有 MS Blend,您可以在 Blend 的文件夹中找到它们(例如,在 C:\Program Files\Microsoft Expression\Blend 3\SystemThemes\Wpf 中)

    为了尊重主题,您还应该为控件的每个主题创建一种样式。在自定义控件和主题支持上有many resources。顺便提一个:WPF: Changing control style based on the system theme

    【讨论】:

    • 您知道我可以扩展现有控件(例如通过从 Button 派生创建 ImageButton)但保留所有主题的任何技巧吗?
    【解决方案2】:

    作为开发人员,您希望根据控件的功能来编写控件。到处使用默认控件样式。然后让专业人士处理它的图形设计方面。如果您覆盖控件的 ControlTemplate,则您已经忙于主题化了。

    如果您对 ControlTemplates 不屑一顾,请尝试使用标准方法,否则一旦图形设计师开始处理应用程序,他/她就会对您发誓:)

    主题是针对单个控件并重新定义其外观的样式集合。您为其提供了 ControlTemplate 的任何控件都不会应用它或与主题包不一致(取决于您是通过 x:Name 还是通过 Type 访问主题)

    如果您覆盖 DataTemplates,那么您就可以了。您可以安全地执行此操作,而不必担心主题干扰。

    【讨论】:

    • 这在我看来是 WPF 中的一个主要设计缺陷。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2021-02-14
    相关资源
    最近更新 更多