selectionChanged事件因未知原因触发异常

时间:2010-12-21 21:55:23

标签: wpf tabcontrol

你好我遇到了问题,每当我尝试在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");

    }

提前感谢您的帮助

1 个答案:

答案 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

是的,原因在评论中提到的新闻组帖子中有所解释。