关于自定义空间阻止事件冒泡的解决方案

最近在利用WPF做程序的客户端,其中有一个页面叫做Dashboard,里面有很多个自定义的UserControl的GroupBox。本来想通过双击每一个小GroupBox的Title,跳转到另外一个TabControl里面的TabItem。可是一直没有办法实现跳转。

经过查找发现是因为双击自定义的UserControl的时候会处罚所在的父控件TabItem,以及TabControl的MouseDoubleClick事件,导致刚刚做完的跳转,又马上跳转会到当前的TabItem。


一开始度娘上说,可以通过处理e.Handle来解决

        void TabItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (e.Source is TabItem)
            {
                e.Handled = true;
                Debug.WriteLine(MainTabControl.SelectedIndex.ToString());
            } 
        }

引用自http://blog.csdn.net/song_qingwei/article/details/50215135


但是使用后还是不行,最后通过这篇文章找到答案

https://q.cnblogs.com/q/64242/


解决摘要:

当自定义控件的主容器没有设置背景色(背景透明)时,在自定义控件主容器上的移动 不会触发MouseDoubleClick,然后进入用户控件的子控件时,才会触发MouseDoubleClick,然后往上冒泡,这样会触发多次,并且通过e.Handled无法阻止冒泡,并且e.OriginalSource 始终是指代用户控件。但是设置背景后,情况就是只要进入自定义控件,就只冒泡一次,在子控件之间切换不会再次冒泡


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值