路由事件 (用只读的静态字段表示static readonly )
- 定义:public static readonly RoutedEvent ClickEvent
- 注册:EventManager.RegisterRoutedEvent("事件名称",“RoutingStrategy”,typeof(RoutedEventHandler),typeof(拥有事件的类))
- 封装:public event RoutedEventHandler "事件名称"{ AddHandler()、 AddHandler()}
- 共享路由事件:可以用过RoutedEvent.AddOwner()重写
- 处理路由事件:在XAML中:img对象通过MouseUp连接到img_MouseUp的事件处理程序,MouseUp="img_MouseUp"
在C#代码中:img.MouseUp += new MouseButtonEventHandler(img_MouseUp);
img.MouseUp += img_MouseUp; img.MouseUp -= img_MouseUp;
RoutedEventHandler:路由事件的委托,响应RoutedEvent,处理RoutedEventArgs中的数据
RoutedEvent:定义路由事件
RoutedEventArgs:路由事件被触发,将数据封装RoutedEventArgs对象中,数据(属性)包含:Source、OriginalSource、RoutedEvent、Handeler
- 冒泡事件:MouseUp="SomethingClick",SomethingClick中包含RoutedEventArgs中的属性
- 附加属性:StackPanel中若干个Button的Click需要关联到同一个事件处理程序,StackPanel没有Click事件,解决方法:Button.Click="SomethingClick"
- 隧道事件:Preview开头,首先在窗口触发,然后在整个层次结构中向下传递。
WPF事件-生命周期事件:
Initialized(控件、窗口初始化)、SourceInitialized(Window特有,创建底层窗口句柄)、
Loaded(控件加载至可视化树)、LayoutUpdated(布局调整完成)、
Rendering(开始绘制)、UnLoaded(从可视化树移除控件)、
Closing(Window特有,关闭窗口前)、Closed(Window特有,关闭窗口后)
键盘输入(先触发隧道事件,因为在事件到达目标控件之前,允许父级容器提前处理事件,方便拦截。)
PreviewKeyDown、KeyDown、
PreviewKeyTextInput、TextInput、(不产生文本输入案件按键,不会触发这两个事件)
PreviewKeyUp、KeyUp

键盘状态:
e.KeyboardDevice.Modifiers:获取键盘修饰键ModifierKeys (None、Alt、Control、Shift、Windows )
焦点设置:
TabIndex 定义控件在Tab键导航中的顺序<TextBox TabIndex="2" Width="200" Margin="5" />
IsTabStop 控制控件是否可以通过 Tab 键获得焦点<TextBox TabIndex="1" IsTabStop="false" Width="200" Margin="5" />
[WPF事件-鼠标输入:
鼠标按钮:MouseButtonState.Pressed
鼠标捕获:Mouse.Capture(控件)
鼠标位置:Point position = e.GetPosition(myElement)
鼠标拖放:DragDrop.DoDragDrop("源控件"、"拖动数据"、"DragDropEffects拖放效果")
441

被折叠的 条评论
为什么被折叠?



