Warum ist für das Festlegen des Tastaturfokus aus dem Code dahinter Dispatcher.BeginInvoke erforderlich?
Ich habe einUserControl
das enthält aTextBox
. Wenn die Benutzersteuerung sichtbar wird, gebe ich dieTextBox
Fokus. Könnte jemand erklären, warum ich das mit dem tun muss?Dispatcher
?
public MyUserControl()
{
InitializeComponent();
this.IsVisibleChanged += VisibilityChanged;
}
Fall 1 (funktioniert):
private void VisibilityChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
this.Dispatcher.BeginInvoke((Action)delegate
{
Keyboard.Focus(this.InputTextBox);
}, DispatcherPriority.Render);
}
}
Fall 2 (funktioniert nicht):
private void VisibilityChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
Keyboard.Focus(InputTextBox);
}
}