2010-07-25 71 views
1

我正在创建从ComboBox继承的自定义WPF控件类。由于我只是定义了行为,现有的ComboBox模板对我来说很好,我不想创建一整套模板来支持不同的主题。有没有办法指定我的控件使用现有的组合框模板?重用自定义WPF控件中的现有模板

回答

1

给你控制一个默认样式,并设置BasedOn到组合框的默认样式:

<Style TargetType="{x:Type local:CustomControl1}" 
     BasedOn="{StaticResource {x:Type ComboBox}}"> 
</Style> 

这将继承从ComboBox默认样式模板二传手。

+0

虽然托马斯的回答也将工作对于这种情况,有其自身的优势,利用这种方法将允许您稍后重写您的自定义控件的默认样式与ComboBox的独立样式,而无需返回并调整控件的代码。 – 2010-07-26 00:38:54

1

你不必做任何事情。如果你的控制从ComboBox继承,你不会覆盖DefaultStyleKey属性,它会使用相同的样式ComboBox(因此同一模板)

+0

我一开始就试过这个,但是向导的默认行为是重写这个键,并且我得到了一个无形的控制。这是一个很好的解决方案,它可以工作,所以我给了它一个投票,但我已经接受了另一个,因为它使您有选择地覆盖和扩展现有模板,这很好。 – Shane 2010-07-26 14:40:10