我在一個WPF項目上工作,我已經爲某些特殊操作對CheckBox
控制進行了重寫。這是正常工作。如何繼承控制模板
我的問題是,從主題(來自codeplex的shinyred.xaml)應用的ControlTemplate
未應用於我的覆蓋控件。有沒有辦法繼承我的新控件使用的CheckBox
ControlTemplate
?
我能找到的所有樣品都集中在繼承CheckBox
的樣式,但沒有任何關於ControlTemplate
的樣式。
我在一個WPF項目上工作,我已經爲某些特殊操作對CheckBox
控制進行了重寫。這是正常工作。如何繼承控制模板
我的問題是,從主題(來自codeplex的shinyred.xaml)應用的ControlTemplate
未應用於我的覆蓋控件。有沒有辦法繼承我的新控件使用的CheckBox
ControlTemplate
?
我能找到的所有樣品都集中在繼承CheckBox
的樣式,但沒有任何關於ControlTemplate
的樣式。
不,如你所說可以通過使用BasedOn
屬性來「繼承」一種風格,但不可能直接「繼承」模板。這是可以理解的,但模板繼承的語義是什麼?派生模板如何能夠以某種方式添加或更改基本模板中的元素?
使用樣式完全有可能,因爲您可以簡單地添加Setters
,Triggers
等。唯一可以想象的模板繼承可能是將Triggers
添加到基本模板。但是,在這種情況下,您必須熟悉基本模板中的元素名稱,並且基本模板中的元素名稱更改可能會破壞派生的元素名稱。更不用提可讀性問題了,在這裏你引用了衍生模板中的一個名稱,該模板在其他地方完全定義。
遲來的加法說了這麼多,就可以解決你的特定問題(儘管我現在懷疑它仍然是你的問題,甚至是一個問題)。您只需使用設置器爲您的控件定義一種樣式,即Template
屬性:
<Style TargetType="<your type>">
<Setter Property="Template" Value="{StaticResource <existing template resource name>}"/>
</Style>