Quiero que desde el controlador PreviewTextInput se cree un nuevo control y se establezca el foco en él. Pero incluso después de llamar a Focus() en el nuevo control, el cursor aún está en el antiguo cuadro de texto. El controlador UserControl_PreviewTextInput está registrado en el UserControl que contiene este cuadro de texto, si esto es importante.WPF: No se puede establecer el foco
private void UserControl_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
CodeLineControl el = new CodeLineControl();
container.Children.Insert(idx+1, el);
el.innerTextBox.Focus();
}
CodeLineControl se define como que (simplificado):
<UserControl ..>
<DockPanel Name="codeline" Background="AntiqueWhite" >
<TextBox Name="innerTextBox"/>
</DockPanel>
</UserControl>
¿Hay algunas limitaciones en Focus() que Iam no AWRE acerca? ¿No puedo mover Focus() lejos de un TextBox desde un controlador PreviewTextInput? ¿No puedo establecer el foco en los elementos recién creados?
¿Por qué es necesario? Agregué el nuevo control a la interfaz gráfica de modo que debería ser visible y enfocable. – codymanix
Creo que se procesa de forma asíncrona en un hilo separado y no puede enfocarse en él hasta que esté completo. O bien, es posible que después de agregar un nuevo control, WPF cambie el enfoque en sí mismo. Quizás el evento LostFocus se disparó en algún momento? Podría escribir un archivo de registro para ver qué controles obtienen/pierden el foco. http://www.julmar.com/blog/mark/PermaLink,guid,6e4769e5-a0b3-47b2-a142-6dfefd0c028e.aspx –