WPF事件包括常见的鼠标、键盘、手写笔,触控板/触控屏事件,也有呈现WPF框架自身特点的生命周期事件.
- 生命周期事件
生命周期事件在frameworkelement中定义,比较重要的是元素创建和释放(销毁)的时候产生的Initialized、Loaded、Unloaded这三个事件。
其中Initialized事件是由里向外,由下往上触发,这样也就能确保相应元素之下的元素均已经初始化完毕;而Loaded事件则与initialized事件的触发顺序想法,是由外向
里,从上至下,当所有元素都触发了loaded事件后,则窗口开始呈现.Unloaded事件被触发后,则窗口中的元素无法访问到了。
- 鼠标、键盘、手写笔和触控板/触控屏事件
上述事件均被定义成输入事件也就是因外部设备的动作而触发,值得注意的是上述事件反馈的事件参数继承了RouteEventArgs,对于功能键和字符数字键同时按住的时候会导致多次产生功能键的previewkeydown事件,为了体现这种状态,WPF在事件参数中提供了IsRepeat的属性。
tips:当焦点在TextBox的时候,如果按空格键将不会触发previewtextinput事件,如果需要对其进行处理的话则只能在previewkeydown事件进行处理。对于鼠标事件有几个重要的应用场景:改变元素大小和复制或移动元素,其中改变元素大小需要使用mouse.capture方法或者元素本身的UIElement.CaptureMouse/ReleaseMouseCapture方法,若是复制和移动元素则涉及到了DragDrop类。