¿Por qué la configuración del enfoque del teclado desde el código subyacente requiere Dispatcher.BeginInvoke?

tengo unUserControl que contiene unTextBox. Cuando el control del usuario se hace visible, doy laTextBox atención. ¿Podría alguien aclarar por qué tengo que hacer esto usando elDispatcher?

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 (no funciona):

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta