我在blog中读到了以下句子:
WPF的第一条规则:
避免控制继承。
我在其他地方也见过类似的事情。 但是,我不理解逻辑。
此外,我在StackOverflow中看到了涉及继承WPF控件的建议(例如,请参阅我对previous问题的回复)。
我想了解为什么(以及如果)应该避免控制继承。
答案 0 :(得分:8)
WPF控件“看起来很”。换句话说,他们的外表与他们的行为是分开的。通常,您实际上想要自定义外观 - 而不是行为。与Winforms的世界不同,这不需要您继承新控件并覆盖渲染逻辑。相反,您在控件上设置了一些属性,如果无法从其他属性中获得所需的外观,则可以覆盖模板本身。
请注意,“避免”就是说。如果可以,请避免继承。在需要修改行为的情况下,继承可能是最佳选择。
答案 1 :(得分:4)
链接中的博客最后还说明:
“使用样式,模板,装饰器以及附加属性和行为,您可以完成以前用于滚动新控件的大部分内容。”< / p>
这是事实。但是,总是如此,wpftoolkit团队不会将他们的DataGrid作为MultiSelector的子类。
我会说,分别判断每个案件。另请查看this answer。