将模板应用于控件和子控件
本文关键字:控件 应用于 | 更新日期: 2023-09-27 18:18:30
我一直在摆弄WPF MDI,它为MDI子对象设置了控件模板。所以当你添加一个MdiChild
对象并将其Content
设置为UserControl时,它看起来很好,但如果你从mdicchild继承,那么它就不起作用了。
模板代码看起来像这样:
<Style TargetType="{x:Type local:MdiChild}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MdiChild}">
<!-- ... -->
我希望这个模板不仅适用于mdicchild,而且适用于从它派生的任何东西。我该怎么做呢?我能想到的唯一方法是创建一个基于mdicchild样式的针对每个派生类的样式,但这不是很理想。
您必须为每个派生类型声明样式,但使用WPF,您可以使用 BasedOn
继承基样式。
<Style TargetType="{x:Type local:DerivedMdiChild}"
BasedOn="{StaticResource {x:Type local:MdiChild}}">
......
</Style>
这样,所有的setter、触发器等都将被继承,而不必为每个派生样式重新定义它们。此外,如果你想在派生版本中有一些不同的行为,它可以让你重写基本样式的setter。