Исключения срабатывания события selectionChanged по неизвестным причинам - PullRequest
1 голос
/ 22 декабря 2010

привет, у меня возникает проблема, всякий раз, когда я пытаюсь написать какую-нибудь простую вещь в событии TabControl_SelectionChanged, я получаю это сообщение

В WindowsBase.dll

возникает необработанное исключение типа 'System.InvalidOperationException'

Дополнительная информация: обработка диспетчера была приостановлена, но сообщения все еще обрабатываются.

например: это мой 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 Ответ

2 голосов
/ 22 декабря 2010

Это потому, что ваше событие SelectionChanged запускается до загрузки tabcontrol (и окна).Если вы делаете это так, это работает (извините за пример VB.NET, но вы поняли):

Private Sub TabControl_SelectionChanged(ByVal sender As Object, ByVal e As RoutedEventArgs)

    If Me.IsLoaded Then
        MsgBox("hello")
    End If

End Sub

И да, причина объясняется в сообщении группы новостей, упомянутом в комментарии.

...