这是更好地覆盖WPF控件行为的方法 - 在代码中添加事件处理程序或为其添加行为类

时间:2014-12-01 13:30:57

标签: c# wpf wpf-controls

最近我在自定义数字控件中遇到了一个问题,它可以采用双值。但在某些情况下,必须限制只采用整数。在这里,我有两种方法可以做到这一点。在文本框的textchangedeventhandler中处理它,或者为自定义Numeric文本框创建行为类。根据性能,标准和可扩展性,我需要了解哪一个更好。我也浏览了这个链接How do I get a TextBox to only accept numeric input in WPF?。但是根据标准需要更具体的答案。

1 个答案:

答案 0 :(得分:0)

我的意见是这样的。我更喜欢构图而不是继承。网上有很多关于此的讨论(不论技术如何)。或许首先阅读:http://en.wikipedia.org/wiki/Composition_over_inheritance

所以,当我想改变WPF控件的行为时,我通常会使用附加属性(或者如果你愿意的话,还是使用Behavor)作为我的初始钩子。在某些情况下,我会进行复杂的修改,然后我会有一个完整的“监听器”类监视并对控件的输入作出反应。

但是,有时您可能需要获取控件的受保护成员。如果无法避免这种情况,那就是继承。

所以,在架构上我会说首先选择附加属性(或Behavor),继承第二个属性。