Это потому, что ваше событие 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
И да, причина объясняется в сообщении группы новостей, упомянутом в комментарии.