Control.FocusState Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém um valor que especifica se esse controle tem foco e o modo pelo qual o foco foi obtido.
public:
property FocusState FocusState { FocusState get(); };
FocusState FocusState();
public FocusState FocusState { get; }
var focusState = control.focusState;
Public ReadOnly Property FocusState As FocusState
Valor da propriedade
Um valor da enumeração. Um valor Desfocado indica que o controle não tem foco.
Comentários
Essa propriedade dá suporte a controles que usam estilos visuais diferentes, dependendo se o controle foi focado pelo teclado ou por outros meios. Alguns controles usam estados visuais que mostram um indicador de foco visível se o controle foi focado por uma ação de teclado, mas não mostram o indicador se o controle foi focado por uma ação de ponteiro. A lógica interna desse controle implementa OnGotFocus e obtém o valor de FocusState do remetente. Se FocusState for Keyboard, um estado visual nomeado diferente que inclui um retângulo de foco será carregado chamando GoToState. Normalmente, os estados visuais relacionados ao foco são agrupados no modelo de controle padrão XAML. Controles personalizados que desejam usar visuais de foco diferentes, dependendo dos meios de foco, podem implementar essa mesma lógica por conta própria. Consulte OnGotFocus.
Outra maneira de usar essa propriedade é usar FocusManager para determinar qual elemento na interface do usuário geral tem foco e, em seguida, chamar FocusState nesse elemento para obter informações sobre como esse controle recebeu o foco.
Observações para versões anteriores
Observação
Em Windows 8, quando FocusState é Programático, o visual de foco do teclado é mostrado mesmo se o método anterior de entrada era ponteiro. Em Windows 8.1, quando você chama Focus (FocusState.Programmatic), o FocusState anterior, ponteiro ou teclado, é mantido para que o visual de foco correto seja mostrado. Isso significa que, se você marcar o valor da propriedade FocusState depois de chamar Focus (FocusState.Programmatic), a propriedade FocusState terá um valor de Pointer ou Keyboard.
Em um aplicativo compilado para Windows 8, mas executado em Windows 8.1, o comportamento de Windows 8 é mantido. O valor da propriedade FocusState é Programmatic e o visual de foco do teclado é mostrado.
Observação
Classes que herdam de ItemsControl, como ListBox e AutoSuggestBox, não propagam a propriedade FocusState. Eles sempre retornarão Desfocado. Acesse o valor correto por meio de RoutedEventArgs.OriginalSource.