你好我遇到了问题,每当我尝试在TabControl_SelectionChanged事件中编写任何简单的事情时,我都会收到此消息
WindowsBase.dll中出现未处理的“System.InvalidOperationException”类型异常
其他信息:Dispatcher处理已暂停,但邮件仍在处理中。
例如:这是我的xaml:
<Window x:Class="try1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="auto" Width="auto" xmlns:my="clr-namespace:try1" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="171" d:DesignWidth="271" SizeToContent="WidthAndHeight">
<TabControl SelectionChanged="TabControl_SelectionChanged">
<CheckBox Name="cbx"></CheckBox>
<TabItem Header="tabItem1" Name="tabItem1">
<Grid />
</TabItem>
<TabItem Header="tabItem2" Name="tabItem2">
<Grid />
</TabItem>
</TabControl>
这是我背后的代码:
private void something_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("hello");
}
提前感谢您的帮助
答案 0 :(得分:2)
那是因为在加载tabcontrol(和窗口)之前,SelectionChanged事件被触发了。 如果你这样做,它可以工作(抱歉VB.NET示例,但你明白了):
Private Sub TabControl_SelectionChanged(ByVal sender As Object, ByVal e As RoutedEventArgs)
If Me.IsLoaded Then
MsgBox("hello")
End If
End Sub
是的,原因在评论中提到的新闻组帖子中有所解释。