WPF路由事件

路由事件 (用只读的静态字段表示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对象中,数据(属性)包含:SourceOriginalSourceRoutedEventHandeler

  • 冒泡事件:MouseUp="SomethingClick"SomethingClick中包含RoutedEventArgs中的属性
  • 附加属性:StackPanel中若干个ButtonClick需要关联到同一个事件处理程序,StackPanel没有Click事件,解决方法:Button.Click="SomethingClick"
  • 隧道事件:Preview开头,首先在窗口触发,然后在整个层次结构中向下传递。

WPF事件-生命周期事件:

Initialized(控件、窗口初始化)SourceInitialized(Window特有,创建底层窗口句柄)

Loaded(控件加载至可视化树)LayoutUpdated(布局调整完成)

Rendering(开始绘制)UnLoaded(从可视化树移除控件)

Closing(Window特有,关闭窗口前)Closed(Window特有,关闭窗口后)

键盘输入(先触发隧道事件,因为在事件到达目标控件之前,允许父级容器提前处理事件,方便拦截。)

PreviewKeyDownKeyDown

PreviewKeyTextInputTextInput(不产生文本输入案件按键,不会触发这两个事件)

PreviewKeyUpKeyUp

键盘状态:

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拖放效果")

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值