gpt4 book ai didi

wpf - 如何继承控件模板

转载 作者:行者123 更新时间:2023-12-03 13:31:33 25 4
gpt4 key购买 nike

我在WPF项目中工作,在其中我重写了CheckBox控件以进行一些特殊操作。那工作正常。

我的问题是,从主题(codeplex中的shinyred.xaml)应用的ControlTemplate没有应用于我的重写控件。有没有一种方法可以继承CheckBox ControlTemplate供我的新控件使用?

我可以找到的所有示例都集中在继承CheckBox的样式上,但没有涉及ControlTemplate

最佳答案

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

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

Belated Addition 综上所述,可以解决您的特定问题(尽管我现在怀疑这仍然是您的问题,甚至是问题)。您只需为Template属性的 setter 为控件定义样式,即可:

<Style TargetType="<your type>">
<Setter Property="Template" Value="{StaticResource <existing template resource name>}"/>
</Style>

关于wpf - 如何继承控件模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2034511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com