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?
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.