我正在 WPF 上工作,我正在创建一个 userControl,其中包含一个 TabControl,其中有一些 TabItem。
当所选选项卡更改时,我需要执行一些操作,因此,我尝试做的是使用该事件myTabControl.SelectionChanged
但它被提出了很多次,即使我只点击了一次 TabItem。然后我读了这篇文章标准 wpf 选项卡控件中是否有选定选项卡更改事件 https://stackoverflow.com/questions/772841/is-there-selected-tab-changed-event-in-the-standard-wpf-tab-control并将此代码放入我的方法中:
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
Visual Studio 指向里面的第一行代码if (e.Source is TabControl) { //here }
但我找到了这篇文章选择因未知原因而更改事件触发异常 https://stackoverflow.com/questions/4504310/selectionchanged-event-firing-exceptions-for-unknown-reasons我可以通过编写如下代码来解决这个问题:
void mainTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.Source is TabControl)
{
if (this.IsLoaded)
{
//do work when tab is changed
}
}
}
但现在我遇到了另一个我无法解决的问题:
该事件已触发两次!另一个奇怪的事情是,只有当我第一次尝试更改所选选项卡时,事件才会引发两次,但所选选项卡仍然相同
我希望有人能帮助我,提前谢谢你。