poner c# .net wpf textbox focus

c# - poner - Establecer el foco en el cuadro de texto en WPF



focus c# textbox (6)

Cómo establecer el foco en un elemento TextBox en WPF

Tengo este código:

txtCompanyID.Focusable = true; txtCompanyID.Focus();

...Pero no está funcionando.

¿Alguna idea?


En XAML:

<StackPanel FocusManager.FocusedElement="{Binding ElementName=Box}"> <TextBox Name="Box" /> </StackPanel>


Nada de esto funcionó para mí ya que estaba usando una grilla en lugar de un StackPanel.

Finalmente encontré este ejemplo: http://spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/

y lo modificó a esto:

En la sección ''Recursos'':

<Style x:Key="FocusTextBox" TargetType="Grid"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=textBoxName, Path=IsVisible}" Value="True"> <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=textBoxName}"/> </DataTrigger> </Style.Triggers> </Style>

En mi definición de cuadrícula:

<Grid Style="{StaticResource FocusTextBox}" />


Nadie explicó hasta ahora por qué el código en la pregunta no funciona. Mi suposición es que el código fue colocado en el constructor de la ventana. Pero en este momento es demasiado pronto para establecer el foco. Tiene que hacerse una vez que la Ventana esté lista para la interacción. El mejor lugar para el código es el evento Loaded:

public KonsoleWindow() { public TestWindow() { InitializeComponent(); Loaded += TestWindow_Loaded; } private void TestWindow_Loaded(object sender, RoutedEventArgs e) { txtCompanyID.Focus(); } }


Pruebe esto: MyTextBox.Focus ( );



txtCompanyID.Focusable = true; Keyboard.Focus(txtCompanyID);

msdn:

Solo puede haber un elemento en todo el escritorio que tenga foco en el teclado. En WPF, el elemento que tiene el foco del teclado tendrá IsKeyboardFocused establecido en verdadero.

Podría romper después de la línea de configuración y verificar el valor de la propiedad IsKeyboardFocused . También verifique si realmente llega a esa línea o tal vez establece algún otro elemento para enfocarse después de eso.