Почему для установки фокуса клавиатуры из кода требуется Dispatcher.BeginInvoke?

у меня естьUserControl который содержитTextBox, Когда пользовательский элемент управления становится видимым, я даюTextBox фокус. Может ли кто-нибудь уточнить, почему я должен сделать это, используяDispatcher?

public MyUserControl() 
{
    InitializeComponent();
    this.IsVisibleChanged += VisibilityChanged;
}

Дело 1 (работает):

private void VisibilityChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    if (this.Visibility == Visibility.Visible)
    {
        this.Dispatcher.BeginInvoke((Action)delegate
        {
            Keyboard.Focus(this.InputTextBox);
        }, DispatcherPriority.Render);
    }
}

Случай 2 (не работает):

private void VisibilityChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    if (this.Visibility == Visibility.Visible)
    {
        Keyboard.Focus(InputTextBox);
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос