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