Compartilhar via


Caixa de senha

Uma caixa de senha é uma caixa de entrada de texto que oculta os caracteres digitados nela para fins de privacidade. Uma caixa de senha se parece com uma caixa de texto, exceto que ela renderiza caracteres de espaço reservado no lugar do texto que foi inserido. Você pode configurar o caractere de espaço reservado.

Texto de digitação do estado de foco da caixa de senha

Por padrão, a caixa de senha fornece uma maneira de o usuário exibir sua senha mantendo pressionado um botão de revelação. Você pode desabilitar o botão de revelação ou fornecer um mecanismo alternativo para revelar a senha, como uma caixa de seleção.

Esse é o controle correto?

Use o controle PasswordBox para receber uma senha ou outros dados particulares, como um número do seguro social.

Para obter mais informações sobre como escolher o controle de texto certo, consulte o artigo Controles de texto.

Recomendações

  • Use um rótulo ou texto de espaço reservado se a finalidade da caixa de senha não estiver clara. Um rótulo fica visível, independentemente da caixa de entrada de texto ter ou não um valor. O texto de espaço reservado é exibido dentro da caixa de entrada de texto e desaparece uma vez que um valor tiver sido inserido.
  • Dê à caixa de senha uma largura apropriada para o intervalo de valores que podem ser inseridos. O comprimento da palavra varia entre os idiomas, então leve em conta a localização se quiser que seu aplicativo esteja preparado para uso internacional.
  • Não coloque outro controle ao lado de uma caixa de entrada de senha. A caixa de senha tem um botão de revelação de senha para que os usuários verifiquem as senhas digitadas, e ter outro controle ao lado dele pode fazer com que os usuários revelem acidentalmente suas senhas quando tentarem interagir com o outro controle. Para evitar que isso aconteça, coloque algum espaçamento entre a senha na caixa put e o outro controle ou coloque o outro controle na próxima linha.
  • Considere apresentar duas caixas de senha para a criação da conta: uma para a nova senha e uma segunda para confirmar a nova senha.
  • Mostrar apenas uma única caixa de senha para logins.
  • Quando uma caixa de senha é usada para inserir um PIN, considere fornecer uma resposta instantânea assim que o último número for inserido, em vez de usar um botão de confirmação.

Exemplos

A caixa de senha tem vários estados, incluindo esses notáveis.

Uma caixa de senha em repouso pode mostrar texto de dica para que o usuário saiba sua finalidade:

Caixa de senha em repouso com texto de dica

Quando o usuário digita em uma caixa de senha, o comportamento padrão é mostrar marcadores que ocultam o texto que está sendo inserido:

Texto de digitação do estado de foco da caixa de senha

Pressionar o botão "revelar" à direita dá uma olhada no texto da senha que está sendo inserido:

Texto da caixa de senha revelado

UWP e WinUI 2

Importante

As informações e exemplos neste artigo são otimizados para aplicativos que usam o SDK do Aplicativo Windows e o WinUI 3, mas geralmente são aplicáveis a aplicativos UWP que usam o WinUI 2. Consulte a referência de API da UWP para obter informações e exemplos específicos da plataforma.

Esta seção contém informações necessárias para usar o controle em um aplicativo UWP ou WinUI 2.

As APIs para esse controle existem no namespace Windows.UI.Xaml.Controls.

É recomendável usar a WinUI 2 mais recente para obter os estilos e modelos mais atuais para todos os controles. WinUI 2.2 ou posterior inclui um novo modelo para esse controle que usa cantos arredondados. Para obter mais informações, confira Raio de canto.

Criar uma caixa de senha

O aplicativo Galeria da WinUI 3 inclui exemplos interativos da maioria dos controles, recursos e funcionalidades da WinUI 3. Obtenha o aplicativo na Microsoft Store ou o código-fonte no GitHub

Use a propriedade Password para obter ou definir o conteúdo do PasswordBox. Você pode fazer isso no manipulador do evento PasswordChanged para executar a validação enquanto o usuário insere a senha. Ou você pode usar outro evento, como um botão Click, para executar a validação depois que o usuário concluir a entrada de texto.

Aqui está o XAML para um controle de caixa de senha que demonstra a aparência padrão do PasswordBox. Quando o usuário insere uma senha, você verifica se é o valor literal, "Senha". Se estiver, você exibe uma mensagem para o usuário.

<StackPanel>  
  <PasswordBox x:Name="passwordBox" Width="200" MaxLength="16"
             PasswordChanged="passwordBox_PasswordChanged"/>

  <TextBlock x:Name="statusText" Margin="10" HorizontalAlignment="Center" />
</StackPanel>   
private void passwordBox_PasswordChanged(object sender, RoutedEventArgs e)
{
    if (passwordBox.Password == "Password")
    {
        statusText.Text = "'Password' is not allowed as a password.";
    }
    else
    {
        statusText.Text = string.Empty;
    }
}

Aqui está o resultado quando esse código é executado e o usuário digita "Senha".

Caixa de senha com uma mensagem de validação

Caractere de senha

Você pode alterar o caractere usado para mascarar a senha definindo a propriedade PasswordChar . Aqui, o marcador padrão é substituído por um sinal de libra.

<PasswordBox x:Name="passwordBox" Width="300" PasswordChar="#"/>

O resultado é assim.

Caixa de senha com um caractere personalizado

Cabeçalhos e texto de espaço reservado

Você pode usar as propriedades Header e PlaceholderText para fornecer contexto para o PasswordBox. Isso é especialmente útil quando você tem várias caixas, como em um formulário para alterar uma senha.

<PasswordBox x:Name="passwordBox" Width="200" Header="Password" PlaceholderText="Enter your password"/>

Caixa de senha em repouso com texto de dica

Comprimento máximo

Especifique o número máximo de caracteres que o usuário pode inserir definindo a propriedade MaxLength . Não há nenhuma propriedade para especificar um comprimento mínimo, mas você pode verificar o comprimento da senha e executar qualquer outra validação no código do aplicativo.

Modo de revelação de senha

O PasswordBox tem um botão interno que o usuário pode pressionar para exibir o texto da senha. Aqui está o resultado da ação do usuário. Quando o usuário a libera, a senha é automaticamente ocultada novamente.

Texto da caixa de senha revelado

Modo de espiada

Por padrão, o botão de revelação de senha (ou botão "espiar") é mostrado. O usuário deve pressionar continuamente o botão para visualizar a senha, para que um alto nível de segurança seja mantido.

O valor da propriedade PasswordRevealMode não é o único fator que determina se um botão de revelação de senha está visível para o usuário. Outros fatores incluem se o controle é exibido acima de uma largura mínima, se o PasswordBox tem foco e se o campo de entrada de texto contém pelo menos um caractere. O botão de revelação de senha é mostrado somente quando o PasswordBox recebe o foco pela primeira vez e um caractere é inserido. Se o PasswordBox perder o foco e depois recuperar o foco, o botão de revelação não será mostrado novamente, a menos que a senha seja apagada e a entrada de caracteres seja reiniciada.

Modos oculto e visível

Os outros valores de enumeração PasswordRevealMode , Hidden e Visible, ocultam o botão de revelação de senha e permitem que você gerencie programaticamente se a senha está obscurecida.

Para sempre ocultar a senha, defina PasswordRevealMode como Hidden. A menos que você precise que a senha seja sempre obscurecida, você pode fornecer uma interface do usuário personalizada para permitir que o usuário alterne o PasswordRevealMode entre Oculto e Visível. Por exemplo, você pode usar uma caixa de seleção para alternar se a senha ficará obscurecida, como mostrado no exemplo a seguir. Você também pode usar outros controles, como ToggleButton, para permitir que o usuário alterne os modos.

Este exemplo mostra como usar um CheckBox para permitir que um usuário alterne o modo de revelação de um PasswordBox.

<StackPanel Width="200">
    <PasswordBox Name="passwordBox1"
                 PasswordRevealMode="Hidden"/>
    <CheckBox Name="revealModeCheckBox" Content="Show password"
              IsChecked="False"
              Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/>
</StackPanel>
private void CheckBox_Changed(object sender, RoutedEventArgs e)
{
    if (revealModeCheckBox.IsChecked == true)
    {
        passwordBox1.PasswordRevealMode = PasswordRevealMode.Visible;
    }
    else
    {
        passwordBox1.PasswordRevealMode = PasswordRevealMode.Hidden;
    }
}

Este PasswordBox se parece com isso.

Caixa de senha com um botão de revelação personalizado

Escolha o teclado correto para o controle de texto

Para ajudar os usuários a inserir dados usando o teclado virtual ou SIP (Soft Input Panel), você pode configurar o escopo de entrada do controle de texto para corresponder ao tipo de dado que se espera que o usuário insira. PasswordBox dá suporte apenas aos valores de escopo de entrada Password e NumericPin . Qualquer outro valor é ignorado.

Para obter mais informações sobre como usar escopos de entrada, consulte Usar escopo de entrada para alterar o teclado virtual.

Obter o código de exemplo

Controles de texto