UWP开发大坑之----路由事件

最近在重写歌词编辑器。。。
我需要在播放进度条被按下和弹起时触发一个我自己写的事件

<Slider PointerPressed="Slider_PointerPressed" PointerReleased="Slider_PointerReleased" />
        private void Slider_PointerPressed(object sender, PointerRoutedEventArgs e)
        {
            UserChangeTime?.Invoke(this, EventArgs.Empty);
        }

        private void Slider_PointerReleased(object sender, PointerRoutedEventArgs e)
        {
            UserChangeTime?.Invoke(this, EventArgs.Empty);
        }

结果经过测试,发现只有右键才能触发这按下和弹起的事件,对左键根本没反应
于是我就Google去了。。。Google到这个帖子。。

TMD,原来是微软构建控件时设置了 e.Handled = true;
解决方法是在后台订阅这些路由事件

Position_Slider.AddHandler(PointerPressedEvent, new PointerEventHandler((s, e) => UserChangeTime?.Invoke(this, EventArgs.Empty)), true);

Position_Slider.AddHandler(PointerReleasedEvent, new PointerEventHandler((s, e) => UserChangeTime?.Invoke(this, EventArgs.Empty)), true);

各参数解释
第一个参数,路由事件对象
第二个参数,处理器(委托)
很关键)第三个参数,用来指示标记为已处理后是否仍要执行的

把上面两段代码加到构造函数里面,OK Run一下
Very Good! 完美解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值