wpf textbox focus

Establezca el foco en un cuadro de texto en xaml wpf



textbox focus (6)

A pesar de algunas publicaciones en este foro y otras, no puedo encontrar algo que me diga cómo enfocar un TextBox .

Tengo un userControl con muchas etiquetas y cuadros de texto. Cuando se carga el formulario, quiero que un determinado cuadro de texto tenga el foco.

He configurado el tabIndex pero parece que no funciona.

¿Alguna sugerencia?


FocusManager no estaba en intellisense y esto me confundió un poco. Acabo de tipear todo el atributo y funcionó.

FocusManager.FocusedElement = "{Binding ElementName = MyTextBox}"

Microsoft Visual Studio Enterprise 2015 versión 14.0.23107.0/C#/WPF


Para completar, también hay una forma de manejar esto desde el código subyacente (por ejemplo, en el caso de controles que, por cualquier razón, se crean dinámicamente y no existen en XAML). Adjunte un controlador al evento Loaded de la ventana y luego use el método ".Focus ()" del control que desea. Ejemplo de Bare-bones a continuación.

public class MyWindow { private VisualCollection controls; private TextBox textBox; // constructor public MyWindow() { controls = new VisualCollection(this); textBox = new TextBox(); controls.Add(textBox); Loaded += window_Loaded; } private void window_Loaded(object sender, RoutedEventArgs e) { textBox.Focus(); } }


Puede aplicar esta propiedad directamente en el TextBox:

<TextBox Text="{Binding MyText}" FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/>


Puede utilizar la propiedad adjunta FocusManager.FocusedElement para este fin. Aquí hay un fragmento de código que establece el foco en TxtB por defecto.

<StackPanel Orientation="Vertical" FocusManager.FocusedElement="{Binding ElementName=TxtB}"> <TextBox x:Name="TxtA" Text="A" /> <TextBox x:Name="TxtB" Text="B" /> </StackPanel>

También puede usar TxtB.Focus() en su código subyacente si no desea hacer esto en XAML.


Soy nuevo en el uso de WPF y he leído los ejemplos anteriores. Tuve una experiencia similar al intentar establecer el foco en un cuadro de texto usando los ejemplos del código xaml, es decir, todos los ejemplos anteriores no funcionaron.

Lo que encontré fue que tuve que colocar el FocusManager.FocusElement en el elemento de la página. Supongo que esto también funcionaría si usaras una ventana como elemento principal. De todos modos, aquí está el código que funcionó para mí.

<Page x:Class="NameOfYourClass" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" Title="Title" Height="720" Width="915" Background="white" Loaded="pgLoaded" FocusManager.FocusedElement="{Binding ElementName=NameOfYourTextBox}"> <!-- Create child elements here. --> </Page>


enlazar el elemento que desea apuntar el foco como

FocusManager.FocusedElement= "{Binding ElementName= Comobox1}"

en la grilla o en el cuadro de grupo, etc.