如何继承控制模板

pho*_*tom 18 wpf wpf-controls controltemplate

我正在开发一个WPF项目,我已经过度CheckBox控制了一些特殊操作.这是正常的.

我的问题是ControlTemplate从主题中应用的(来自codeplex的shinyred.xaml)不适用于我的过度控制.有没有办法继承CheckBox ControlTemplate我的新控件使用?

我能找到的所有样本都专注于继承风格CheckBox,但没有关于ControlTemplate.

Avi*_* P. 20

不,正如您所说,可以通过使用BasedOn属性"继承"样式,但不可能直接"继承"模板.这是可以理解的,模板继承的语义是什么?派生模板如何以某种方式添加或更改基本模板中的元素?

对于样式,它是完全可能的,因为你可以简单地添加Setters,Triggers等等.模板继承唯一可能的是添加Triggers到基本模板.但是,在这种情况下,您必须对基本模板中的元素名称有深入的了解,并且基本模板中的元素名称更改可能会破坏派生的元素名称.更不用说可读性问题,您可以在派生模板中引用一个名称,该名称完全在其他地方定义.

迟来的加法尽管如此,有可能解决你的特殊问题(虽然我现在怀疑它仍然是你的,甚至是一个问题).您只需使用Template属性的setter为控件定义样式,即可:

<Style TargetType="<your type>">
    <Setter Property="Template" Value="{StaticResource <existing template resource name>}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)