¿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);
}
}