A pesar de algunas publicaciones en este foro y otras, no puedo encontrar algo que me diga cómo establecer el enfoque en un TextBox
.
Tengo un userControl con muchas etiquetas y textBoxes. Cuando se carga el formulario, quiero que un cuadro de texto en particular tenga el foco.
He configurado el tabIndex pero eso no parece funcionar.
¿Alguna sugerencia?
Respuestas:
Puede utilizar la
FocusManager.FocusedElement
propiedad adjunta para este propósito. Aquí hay un fragmento de código que establece el enfoque en TxtB de forma predeterminada.También puede usarlo
TxtB.Focus()
en su código subyacente si no desea hacer esto en XAML.fuente
FocusManager
cosas). Al final, lo hice en el código subyacente.Puede aplicar esta propiedad directamente en el TextBox:
fuente
Soy nuevo en el uso de WPF y leyendo los ejemplos anteriores. Tuve una experiencia similar al intentar establecer el foco en un cuadro de texto usando los ejemplos de código xaml dados, es decir, todos los ejemplos anteriores no funcionaron.
Lo que encontré fue que tuve que colocar FocusManager.FocusElement en el elemento de la página. Supongo que esto probablemente también funcionaría si usara una ventana como elemento principal. De todos modos, aquí está el código que funcionó para mí.
fuente
enlazar el elemento al que desea apuntar el enfoque como
en cuadrícula o cuadro de grupo, etc.
fuente
Nov 11 '14
". Se había ido mucho antes de que Adam publicara su comentario :)FocusManager no estaba en intellisense y esto me confundió un poco. Escribí todo el atributo y funcionó.
FocusManager.FocusedElement = "{Nombre de elemento de enlace = MyTextBox}"
Microsoft Visual Studio Enterprise 2015 versión 14.0.23107.0/C#/WPF
fuente
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 desee. Ejemplo básico a continuación.
fuente
De experimentar, la solución xaml
parece funcionar mejor cuando lo coloca en el elemento más alto en la jerarquía de la ventana (generalmente Ventana, o la cuadrícula en la que coloca todo lo demás)
fuente
Uso:
local:FocusManager.FocusOnLoad="True"
fuente
Tengo un TextBox dentro de una Grid dentro de un DataTemplate que quiero que tenga el foco del teclado cuando se vuelva visible. Tambien encontre que
no funcionó para mí.
Sin embargo, cuando llamo a Focus () en el ContentControl principal
comienza a funcionar y el símbolo de intercalación es visible en el TextBox. Creo que el FocusScope debe recibir el enfoque para que la propiedad FocusManager.FocusedElement tenga algún efecto.
alemán
fuente