wpf user-controls textbox input focus

wpf - Enfoque en TextBox cuando UserControl cambie Visibilidad



user-controls input (3)

Tengo un control de usuario cargado dentro de un lienzo; este control de usuario predeterminado tiene visibilidad contraída. Cuando se enfoca un cuadro de texto específico de mi ventana, el control de usuario se hace visible.

Cuando usercontrol se vuelva visible, quiero establecer el foco en otro cuadro de texto dentro de usercontrol.

Intento hacer eso

private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { if (this.Visibility == Visibility.Visible) { FocusManager.SetFocusedElement(this, TextBlockInput); } }

Parece que funciona, pero hay un problema: el cuadro de texto parece enfocado pero el cursor en el cuadro de texto no parpadea y no puedo escribir caracteres para la entrada.

Quisiera que después del enfoque el cuadro de texto esté listo para la entrada. ¿Como lo puedo hacer?


tratar

Keyboard.Focus(TextBlockInput);

mira aquí para más detalles


Bueno, lo resuelvo de esta manera:

private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { if (this.Visibility == Visibility.Visible) { this.Dispatcher.BeginInvoke((Action)delegate { Keyboard.Focus(TextBlockInput); }, DispatcherPriority.Render); } }

Creo que el problema fue que la llamada de enfoque en el evento IsVisibleChanged "alcance" ... ¿verdad?


Otra posible solución alternativa es la Opacity uso de la propiedad de Visibility . En este caso, llamar a Focus() realidad establece el foco.