Apesar de alguns posts neste fórum e outros, não consigo encontrar algo que me diga como definir o foco em a TextBox
.
Eu tenho um userControl com muitos rótulos e textBoxes. Quando o formulário é carregado, quero que um determinado textBox tenha o foco.
Eu configurei o tabIndex, mas não parece funcionar.
Alguma sugestão?
Respostas:
Você pode usar a
FocusManager.FocusedElement
propriedade anexada para essa finalidade. Aqui está um trecho de código que define o foco para TxtB por padrão.Você também pode usar
TxtB.Focus()
em seu code-behind se não quiser fazer isso em XAML.fonte
FocusManager
coisas). No final, eu fiz isso no code-behind.Você pode aplicar esta propriedade diretamente no TextBox:
fonte
Eu sou novo no uso do WPF e lendo os exemplos acima, tive uma experiência semelhante ao tentar definir o foco para uma caixa de texto usando os exemplos de código xaml fornecidos, ou seja, todos os exemplos acima não funcionaram.
O que descobri foi que precisava colocar o FocusManager.FocusElement no elemento da página. Suponho que isso provavelmente funcionaria bem se você usasse uma janela como o elemento pai. Enfim, aqui está o código que funcionou para mim.
fonte
vincule o elemento para o qual você deseja apontar o foco como
na grade ou caixa de grupo etc
fonte
Nov 11 '14
". Ele já havia partido há muito tempo antes de Adam postar seu comentário :)FocusManager não estava em intellisense e isso me confundiu um pouco. Eu apenas digitei o atributo inteiro e funcionou.
FocusManager.FocusedElement = "{Binding ElementName = MyTextBox}"
Microsoft Visual Studio Enterprise 2015 versão 14.0.23107.0/C#/WPF
fonte
Para completar, também há uma maneira de lidar com isso por trás do código (por exemplo, no caso de controles que, por qualquer motivo, são criados dinamicamente e não existem no XAML). Anexe um manipulador ao evento Loaded da janela e, em seguida, use o método ".Focus ()" do controle desejado. Exemplo básico abaixo.
fonte
Por experimentar, a solução xaml
parece funcionar melhor quando você o coloca no elemento mais alto na hierarquia da janela (geralmente a janela ou a grade em que você coloca todo o resto)
fonte
Uso:
local:FocusManager.FocusOnLoad="True"
fonte
Eu tenho um TextBox dentro de uma grade dentro de um DataTemplate que quero ter o foco do teclado quando se tornar visível. Eu também descobri que
não funcionou para mim.
No entanto, quando eu chamo Focus () no ContentControl pai
ele começa a funcionar e o acento circunflexo fica visível no TextBox. Acho que o FocusScope deve receber o foco para que a propriedade FocusManager.FocusedElement tenha algum efeito.
Jerry
fonte