WPF控件继承

时间:2009-08-04 08:22:23

标签: wpf inheritance

我在blog中读到了以下句子:

  

WPF的第一条规则:
  避免控制继承。

我在其他地方也见过类似的事情。 但是,我不理解逻辑。

此外,我在StackOverflow中看到了涉及继承WPF控件的建议(例如,请参阅我对previous问题的回复)。

我想了解为什么(以及如果)应该避免控制继承。

2 个答案:

答案 0 :(得分:8)

WPF控件“看起来很”。换句话说,他们的外表与他们的行为是分开的。通常,您实际上想要自定义外观 - 而不是行为。与Winforms的世界不同,这不需要您继承新控件并覆盖渲染逻辑。相反,您在控件上设置了一些属性,如果无法从其他属性中获得所需的外观,则可以覆盖模板本身。

请注意,“避免”就是说。如果可以,请避免继承。在需要修改行为的情况下,继承可能是最佳选择。

答案 1 :(得分:4)

链接中的博客最后还说明:

使用样式,模板,装饰器以及附加属性和行为,您可以完成以前用于滚动新控件的大部分内容”< / p>

这是事实。但是,总是如此,wpftoolkit团队不会将他们的DataGrid作为MultiSelector的子类。

我会说,分别判断每个案件。另请查看this answer。