嘿,我正在创建一个继承自ListView的自定义控件WPF。但是,我希望它看起来与现有的ListView完全相同。
有没有办法在自定义控件中使用默认的ListView模板而不在xaml中重写?我有一个添加了新控件的Generic.xaml文件,但我不需要重写模板代码。
谢谢
编辑:我也希望尽可能保持DRY而不重复(弄乱)代码。
答案 0 :(得分:4)
如果您继承ListView,那么您的子类控件将使用ListView模板。而已!你不需要做任何事情!
控件使用的模板由其DefaultStyleKey依赖项属性定义。如果要更改控件的模板,请按如下所示设置此属性:
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl),
new FrameworkPropertyMetadata(typeof(MyControl)));
但是,如果不设置此属性,它将使用超类设置的值。
我认为问题在于您使用了“添加新项目”=> “自定义控件”创建您的控件然后更改它扩展的类。而不是这样做,只需添加一个新的C#类并扩展ListView。
答案 1 :(得分:1)
<Style TargetType="{x:Type local:MyControl}" BasedOn={StaticResource {x:Type ListView}}" />