У меня есть usercontrol, загруженный в холсте; этому usercontrol на значении по умолчанию свернули видимость. Когда определенное текстовое поле моего окна фокусируется, usercontrol становятся видимыми.
Когда usercontrol становятся видимыми, я хочу фокус набора к другому текстовому полю внутри usercontrol.
Я пытаюсь сделать это:
private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
FocusManager.SetFocusedElement(this, TextBlockInput);
}
}
Это кажется работой, но существует проблема: текстовое поле кажется сфокусированным, но курсор в текстовое поле не мигает, и я не могу ввести символы для входа.
Я был бы это после фокуса, текстовое поле готово к входу. Как я могу сделать?
Что ж, я решаю следующим образом:
private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
this.Dispatcher.BeginInvoke((Action)delegate
{
Keyboard.Focus(TextBlockInput);
}, DispatcherPriority.Render);
}
}
Я думаю, что проблема заключалась в вызове фокуса в "области" события IsVisibleChanged ... верно?