TabControl 包含UserControl触发切换TabItem失效的解决方案

RT

当前需求为TabControl内包含多个TabItem,例如TabItem1、TabItem2....


TabItem1 内包含一个自己编写的UserControl,同时注册了一个委托事件,绑定在UserControl的一个 Label上,当双击Label时,页面自动跳转到TabItem2.

        //添加一个委托
        public delegate void ReOpenNextFile(ShowFileInfo nextFile);
        //添加一个PassDataBetweenFormHandler类型的事件
        public event ReOpenNextFile OpenNextFileEvent;


但是实际使用时,发现TabControl会将SelectItem切换到TabItem2,然后瞬间切回TabItem1,(UI显示不出来,通过断点发现的)

在网上查询了很多资料,没有应用于TabControl中TabItem包含UserControl切换的解决方案

自己没办法动了一下只会CV的大脑,因为是通过UserControl的MouseDoubleClick事件点击实现调转,是不是UserControl的DoubleClick事件处理后(已经跳转到TabItem2了),Click事件又传到了 TabItem1上,导致焦点转回TabItem1.

事实果然如此~

监听TabItem的MouseDoubleClick事件,过滤该控件的触发,如果是控件内引发的事件过滤,代码如下:

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





你可能感兴趣的:(WPF)