2010-01-09 25 views
14

Bazı özel işlemler için CheckBox denetimini aşırı yüklediğim bir WPF projesinde çalışıyorum. Bu doğru çalışıyor.Denetim Şablonu Nasıl Elde Edilir

Sorunum, temadan (brightred.xaml from codeplex) uygulanan ControlTemplate'un aşırı yüklenmiş denetimime uygulanmadığıdır. Yeni kontrolümün kullanımı için CheckBoxControlTemplate'u miras almanın bir yolu var mı?

Bulabildiğim tüm örnekler, CheckBox stilini devralmaya odaklandı, ancak ControlTemplate hakkında hiçbir şey yok.

cevap

17

Hayır, bir stili BasedOn özelliğini kullanarak 'devralma' mümkün olduğunu söylediğiniz gibi, bir şablonu doğrudan 'devralmak' mümkün değildir. Bu anlaşılabilir bir durumdur, şablon kalıtımının semantiği ne olurdu? Türetilen şablon temel şablonda bir şekilde öğeleri nasıl ekleyebilir veya değiştirebilir? sadece Setters, Triggers vb tasavvur şablon kalıtım taban şablonuna Triggers ekliyor ile mümkün olacağını tek şey ekleyebildiğinizden stilleri ile

o tamamen mümkün. Ancak, bu durumda size samimi baz şablonunda eleman isimlerinin bilgisine ve türetilmiş bir kırabilir taban şablonunda bir eleman ad değişikliğini sahip olurdu. Okunabilir şablonunuzda bir yere atıfta bulunabileceğiniz, okunabilirlikle ilgili bir sorundan bahsetmemek gerekirse, tamamen başka bir yerde tanımlanmıştır.

Belated Addition Bütün bunları söyledikten sonra, probleminizi çözmek mümkündür (yine de şüphe duymamıza rağmen, yine de sizin probleminiz olabilir). Template özelliği için denetiminiz için bir stil tanımlayabilirsiniz:

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