子类化WPF控件主题,为什么不只是部分子类

子类化WPF控件主题,为什么不只是部分子类,wpf,themes,subclass,Wpf,Themes,Subclass,读了这么多书,读了这么多关于继承的书,我找不到任何直接的答案,所以就这样吧 如果您有一个派生的基类来做某些事情、以某种方式进行外观或行为,那么您可以对它进行子类化,只需稍微修改一下differential即可获得父类的所有功能。对于使用WPF主题来说,这似乎并不相同。。。更具体地说,combobox控制textbox的类似问题,但这显然不那么复杂 通过观察,他们讨论了它的整个结构,边界、背景、字形、动作、属性等 如果我想对组合框做的唯一一件事是将其边框更改为红色,那么如果出现错误,我必须基本上重

读了这么多书,读了这么多关于继承的书,我找不到任何直接的答案,所以就这样吧

如果您有一个派生的基类来做某些事情、以某种方式进行外观或行为,那么您可以对它进行子类化,只需稍微修改一下differential即可获得父类的所有功能。对于使用WPF主题来说,这似乎并不相同。。。更具体地说,combobox控制textbox的类似问题,但这显然不那么复杂

通过观察,他们讨论了它的整个结构,边界、背景、字形、动作、属性等

如果我想对组合框做的唯一一件事是将其边框更改为红色,那么如果出现错误,我必须基本上重新定义整个组合框,并以某种方式将自定义触发器设置/颜色放入其中以实现

与textbox控件及其创建方式有些类似。在尝试使用背景色时,它具有命名控件。。。你不能只是说。。。背景=一些静态笔刷值

有哪些快捷方式只允许重写这些小元素,而不必重新创建整个模板控件。我可以想象,如果你错过了一件简单的事情,网格、选项卡控件和其他可能会变得非常混乱的控件会发生什么

我还看到一些控件是由其他控件.模板组成的,那么我如何才能附加到更改控件模板的单个元素上的属性设置。。。例如,组合框具有用于切换按钮的控件模板。因此,它有一个通过x:Name=border的边框,我想在派生样式中更改该元素


谢谢

我可能不明白你的问题。但我得到的是: 是的,你不能部分实现模板,事实上我不知道这怎么可能。但是,如果你想改变某些事情,你当然可以这样做。您可以创建样式、模板、笔刷等作为从属属性,并在给定的子控件上使用TemplateBinding绑定到它们

请记住,WPF允许随时更改模板。如果我们可以部分更改模板,这可能会影响性能,或者会变得混乱和复杂。尽管如此,您仍然可以使用ContentControls和TemplateBinding或简单的触发器来实现这一点

对于可能包含多个零件子控件的自定义控件,我通常为它们添加样式。例如,自定义组合框将包含ToggleButtonStyle

不过,有一件事很好,那就是添加控件模板触发器,而无需重新实现模板