Почему для установки фокуса клавиатуры из кода требуется Dispatcher.BeginInvoke?
у меня естьUserControl
который содержитTextBox
, Когда пользовательский элемент управления становится видимым, я даюTextBox
фокус. Может ли кто-нибудь уточнить, почему я должен сделать это, используяDispatcher
?
public MyUserControl()
{
InitializeComponent();
this.IsVisibleChanged += VisibilityChanged;
}
Дело 1 (работает):
private void VisibilityChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
this.Dispatcher.BeginInvoke((Action)delegate
{
Keyboard.Focus(this.InputTextBox);
}, DispatcherPriority.Render);
}
}
Случай 2 (не работает):
private void VisibilityChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
Keyboard.Focus(InputTextBox);
}
}