WPF:在不重写 ControlTemplate 的情况下创建自定义控件

cod*_*oop 0 wpf templates custom-controls

嘿,我正在创建一个从 ListView 继承的自定义控件 i WPF。但是,我希望它看起来与已经存在的 ListView 完全一样。

有没有办法在自定义控件中使用默认的 ListView 模板而不用 xaml 重写它?我确实有一个添加了新控件的 Generic.xaml 文件,但我不需要重写模板代码。

谢谢

编辑:我也想尽可能保持干燥而不重复(弄乱)代码。

Col*_*inE 5

如果您对 ListView 进行子类化,则您的子类化控件将使用 ListView 模板。就是这样!你什么都不用做!

控件使用的模板由其 DefaultStyleKey 依赖项属性定义。如果要更改控件的模板,请按如下方式设置此属性:

  DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl),
    new FrameworkPropertyMetadata(typeof(MyControl)));
Run Code Online (Sandbox Code Playgroud)

但是,如果不设置此属性,它将使用超类设置的值。

我认为问题在于您使用“添加新项目”=>“自定义控件”来创建控件然后更改了它扩展的类。而不是这样做,只需添加一个新的 C# 类并扩展 ListView。