我在使用C#编写UWP程序时使用了从UIElement
类派生的类,其中我想包括处理输入控件,如鼠标和键盘操作。现在我看到已经有虚拟方法说OnSomeEvent()
并且很明显我可以覆盖这些方法以适合我的处理过程,或者我可以创建新方法处理在基类中定义的公共事件,并将它们订阅到这些输入事件在构造函数中。我认为这两种方法都可以工作,但我希望知道哪些是更专业或更明智的做法,以及为什么。这也有助于解释MS为什么同时提供这两种方式。我应该创建一个新的方法来处理事件或重写基方法吗?
这里的事件和UIElement
类 https://msdn.microsoft.com/en-us/library/system.windows.uielement(v=vs.110).aspx#Examples
的方法和引用
的UIElement提供元件布局 特性的起点的一个段落,并且还暴露了派生类 虚拟方法可以覆盖,这可以影响 元素及其子元素的布局呈现行为。在UIElement 类中也定义了大多数输入和聚焦元素的输入和聚焦行为。这包括键盘,鼠标和手写笔输入的事件, 和相关的状态属性。其中许多事件都是路由事件,其中许多与输入有关的事件都具有冒泡路由 版本以及事件的隧道版本。这些配对 事件通常是控制 作者最感兴趣的事件。
为什么重写提供对确切执行时刻的控制,而事件可能暗示的不是? –
因为事件是先处理谁先处理的,再加上你在事件处理器踢之前不能处理任何事情。也许'UIElement'已经运行了一些你不想要的代码。当您覆盖该方法时,可以防止这种情况发生。 –