美文网首页WPF
路由事件

路由事件

作者: 落地成佛 | 来源:发表于2019-10-11 08:57 被阅读0次

    二、使用

    2.1 例子

        //自定义事件类
        public class MyEventControl:ContentControl
        {
            public static readonly RoutedEvent AAAEvent = EventManager.RegisterRoutedEvent("bbb", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyEventControl));
    
            public event RoutedEventHandler AAA
            {
                add
                {
                    base.AddHandler(AAAEvent, value);
                }
                remove
                {
                    base.RemoveHandler(AAAEvent, value);
                }
            }
            protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
            {
                RaiseEvent(new RoutedEventArgs(AAAEvent));
            }
        }
    
    // xaml页面
    <local:MyEventControl x:Name="mybtnsimple"  
    AAA="Mybtnsimple_AAA">Click to see Tap custom event work</local:MyEventControl>
    
    // xaml 后台
     private void Mybtnsimple_AAA(object sender, RoutedEventArgs e)
     {
         MessageBox.Show("666");
     }
    

    2.2 路由类型

    • 冒泡路由(从下到上)
    • 隧道路由(从上到下)
    • 直接路由

    2.3 添加处理程序

    • Xaml
     <Image Name="img1" Source="Images/1.jpg" MouseEnter="Image_MouseEnter"></Image>
    
    • 后台+=
     img1.MouseEnter += new MouseEventHandler(Img_MouseEnter);
    or
    img1.MouseEnter += Img_MouseEnter;
    
    • AddHandler()方法
     img1.AddHandler(Image.MouseEnterEvent, new MouseEventHandler(Img_MouseEnter));
    

    2.2 断开事件处理程序

    • 通过-=
    //第一种写法。
    img1.MouseEnter -= new MouseEventHandler(Img_MouseEnter);
    //第二种写法。
    img1.MouseEnter -= Img_MouseEnter;
    
    • RemoveHandler()方法
    img1.RemoveHandler(Image.MouseEnterEvent, new MouseEventHandler(Img_MouseEnter));
    

    2.3 RoutedEventArgs

    Source

    Source表示的是LogicalTree上的消息源头

    OriginalSource

    OriginalSource表示的是VisualTree上的源头

    RoutedEvent

    通过事件处理程序为触发的事件提供RoutedEvent对象,如果同一个事件处理程序处理不同的事件,这一信息是非常有用的。

    Handled

    该属性允许终止事件的冒泡或隧道过程,如果将该属性设置为true,就终止了传递。

    相关文章

      网友评论

        本文标题:路由事件

        本文链接:https://www.haomeiwen.com/subject/wqihyctx.html