Por que a configuração do foco do teclado a partir do código requer o Dispatcher.BeginInvoke?

eu tenho umUserControl que contém umTextBox. Quando o controle do usuário se torna visível, eu dou oTextBox foco. Alguém poderia esclarecer porque eu tenho que fazer isso usando oDispatcher?

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

Caso 1 (obras):

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

Caso 2 (não funciona):

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

questionAnswers(3)

yourAnswerToTheQuestion