C# TabControl';s SelectionChanged事件问题

C# TabControl';s SelectionChanged事件问题,c#,wpf,tabcontrol,C#,Wpf,Tabcontrol,我正在处理WPF,我正在创建一个userControl,其中包含一个TabControl,其中包含一些TabItems 当所选选项卡更改时,我需要执行一些操作,因此,我尝试使用事件myTabControl.SelectionChanged,但它被多次引发,即使我只单击了一次TabItem。然后我读了这篇文章,并在我的方法中添加了以下代码: void mainTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e

我正在处理WPF,我正在创建一个userControl,其中包含一个TabControl,其中包含一些TabItems

当所选选项卡更改时,我需要执行一些操作,因此,我尝试使用事件
myTabControl.SelectionChanged
,但它被多次引发,即使我只单击了一次TabItem。然后我读了这篇文章,并在我的方法中添加了以下代码:

void mainTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (e.Source is TabControl)
    {       
        //do work when tab is changed
    }
}
完成此操作后,第一个问题已解决,但当我运行应用程序并尝试更改选项卡时,出现了一个错误:

Dispatcher processing has been suspended, but messages are still being processed
VisualStudio指向
if(e.Source是TabControl){//here}

但是我找到了这篇文章,我可以通过编写以下代码来解决这个问题:

void mainTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (e.Source is TabControl)
    {       
        if (this.IsLoaded)
        {
            //do work when tab is changed
        }
    }
}
 void mainTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.Source is TabItem)
        {       
            if (this.IsLoaded)
            {
                //do work when tab is changed
            }
        }
    }
但现在我有另一个问题,我还没有解决:

事件将触发两次!另一件奇怪的事情是,只有在我第一次尝试更改所选选项卡时,事件才会引发两次,但所选选项卡仍然是相同的


我希望有人能帮助我,提前谢谢你。

我想我需要休息一下,因为我的问题真的很傻:

原来我应该使用
TabItem
而不是
TabControl
,因为它是我感兴趣的控件

因此,我的代码必须如下所示:

void mainTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (e.Source is TabControl)
    {       
        if (this.IsLoaded)
        {
            //do work when tab is changed
        }
    }
}
 void mainTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.Source is TabItem)
        {       
            if (this.IsLoaded)
            {
                //do work when tab is changed
            }
        }
    }