开发者

WPF: Create a custom control without rewriting the ControlTemplate

Hey, I am creating a Custom Control i WPF inheriting from the ListView. However, I want it to look exactly as the already existing ListView.

Is there a way To use the default ListView Template in a Custom Control without rewriting it in xaml? I do have a Generic.xaml file with the new control added, but I should no need to rewrite the template code.

Thanks

EDIT: I also want to keep it as DRY as pos开发者_如何学运维sible without repeating (making a mess) the code.


If you subclass the ListView, them your subclassed control will use the ListView Template. That's it! You do not have to do anything!

The Template used by a control is defined by its DefaultStyleKey dependency property. If you want to change the template of your control, set this property as follows:

  DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl),
    new FrameworkPropertyMetadata(typeof(MyControl)));

However, if you do not set this property, it will use the value set by the superclass.

I think the problem is that you have used "Add New Item" => "Custom Control" to create you control then changed the class it extends. Instead of doing this, just add a new C# class and extend ListView.


<Style TargetType="{x:Type local:MyControl}" BasedOn={StaticResource {x:Type ListView}}" /> 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜