Casella PasswordPassword box

Una casella della password è una casella per l'input di testo che nasconde i caratteri digitati per motivi di privacy.A password box is a text input box that conceals the characters typed into it for the purpose of privacy. È simile a una casella di testo, con la differenza che visualizza caratteri segnaposto al posto del testo immesso.A password box looks like a text box, except that it renders placeholder characters in place of the text that has been entered. Puoi configurare il carattere segnaposto.You can configure the placeholder character.

Per impostazione predefinita, la casella della password offre all'utente un modo per visualizzare la propria password tenendo premuto un pulsante di rivelazione.By default, the password box provides a way for the user to view their password by holding down a reveal button. Puoi disabilitare il pulsante per rilevare la password o fornire un meccanismo alternativo a tale scopo, ad esempio una casella di controllo.You can disable the reveal button, or provide an alternate mechanism to reveal the password, such as a check box.

Ottenere la libreria dell'interfaccia utente di WindowsGet the Windows UI Library

Logo WinUI

La libreria dell'interfaccia utente di Windows 2.2 o versioni successive include un nuovo modello per questo controllo che usa angoli arrotondati.Windows UI Library 2.2 or later includes a new template for this control that uses rounded corners. Per altre informazioni, vedere Raggio dell'angolo.For more info, see Corner radius. WinUI è un pacchetto NuGet che contiene nuovi controlli e funzionalità dell'interfaccia utente per le app di Windows.WinUI is a NuGet package that contains new controls and UI features for Windows apps. Per altre informazioni, incluse le istruzioni per l'installazione, vedi Libreria dell'interfaccia utente di Windows.For more info, including installation instructions, see Windows UI Library.

API della piattaforma: classe PasswordBox, proprietà Password, proprietà PasswordChar, proprietà PasswordRevealMode, evento PasswordChangedPlatform APIs: PasswordBox class, Password property, PasswordChar property, PasswordRevealMode property, PasswordChanged event

È il controllo giusto?Is this the right control?

Usa un controllo PasswordBox per raccogliere password o altri dati privati, come un codice fiscale.Use a PasswordBox control to collect a password or other private data, such as a Social Security number.

Per altre informazioni su come scegliere il controllo di testo più appropriato, vedi l'articolo Controlli di testo.For more info about choosing the right text control, see the Text controls article.

EsempiExamples

Raccolta di controlli XAMLXAML Controls Gallery
XAML controls gallery

Se è installata l'app XAML Controls Gallery, fai clic qui per aprirla e vedere PasswordBox in azione.If you have the XAML Controls Gallery app installed, click here to open the app and see the PasswordBox in action.

La casella della password può avere stati diversi, tra cui quelli principali mostrati di seguito.The password box has several states, including these notable ones.

Una casella della password inattiva può mostrare un suggerimento in modo che l'utente ne riconosca lo scopo:A password box at rest can show hint text so that the user knows its purpose:

Casella della password con stato inattivo e suggerimento

Quando l'utente digita in una casella della password, il comportamento predefinito consiste nel mostrare i punti che nascondono il testo immesso:When the user types in a password box, the default behavior is to show bullets that hide the text being entered:

Stato attivo della casella della password durante la digitazione di testo

Premendo il pulsante "Rivela" a destra, viene visualizzata un'anteprima del testo della password immesso:Pressing the "reveal" button on the right gives a peek at the password text being entered:

Testo rivelato nella casella della password

Creare una casella della passwordCreate a password box

Usa la proprietà Password per ottenere o impostare il contenuto del controllo PasswordBox.Use the Password property to get or set the contents of the PasswordBox. Puoi farlo nel gestore per l'evento PasswordChanged per eseguire la convalida mentre l'utente immette la password.You can do this in the handler for the PasswordChanged event to perform validation while the user enters the password. In alternativa puoi usare un altro evento, ad esempio un pulsante Click, per eseguire la convalida quando l'utente ha completato l'inserimento del testo.Or, you can use another event, like a button Click, to perform validation after the user completes the text entry.

Ecco il codice XAML per un controllo casella della password che mostra l'aspetto predefinito del controllo PasswordBox.Here's the XAML for a password box control that demonstrates the default look of the PasswordBox. Quando l'utente immette una password, questa viene controllata per verificare se è il valore letterale "Password".When the user enters a password, you check to see if it's the literal value, "Password". In caso affermativo, devi visualizzare un messaggio per l'utente.If it is, you display a message to the user.

<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;
    }
}

Ecco il risultato quando questo codice viene eseguito e l'utente immette la parola %%amp;quot;Password%%amp;quot;.Here's the result when this code runs and the user enters "Password".

Casella della password con un messaggio di convalida

Carattere della passwordPassword character

Puoi modificare il carattere usato per nascondere le password impostando la proprietà PasswordChar.You can change the character used to mask the password by setting the PasswordChar property. Qui il punto elenco predefinito viene sostituito da un asterisco.Here, the default bullet is replaced with an asterisk.

<PasswordBox x:Name="passwordBox" Width="200" PasswordChar="*"/>

Il risultato ha questo aspetto.The result looks like this.

Casella della password con carattere personalizzato

Intestazioni e testo del segnapostoHeaders and placeholder text

Puoi usare le proprietà Header e PlaceholderText per fornire il contesto per il controllo PasswordBox.You can use the Header and PlaceholderText properties to provide context for the PasswordBox. Questo è particolarmente utile quando hai più caselle, ad esempio in un modulo per la modifica della password.This is especially useful when you have multiple boxes, such as on a form to change a password.

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

Casella della password con stato inattivo e suggerimento

Lunghezza massimaMaximum length

Specifica il numero massimo di caratteri che l'utente può immettere impostando la proprietà MaxLength.Specify the maximum number of characters that the user can enter by setting the MaxLength property. Non esiste una proprietà per specificare una lunghezza minima, ma puoi verificare la lunghezza della password ed eseguire qualsiasi altra convalida nel codice dell'app.There is no property to specify a minimum length, but you can check the password length, and perform any other validation, in your app code.

Modalità di rivelazione della passwordPassword reveal mode

Il controllo PasswordBox include un pulsante predefinito che l'utente può premere per visualizzare il testo della password.The PasswordBox has a built-in button that the user can press to display the password text. Ecco il risultato dell'azione dell'utente.Here's the result of the user's action. Quando l'utente rilascia il pulsante, la password viene di nuovo nascosta automaticamente.When the user releases it, the password is automatically hidden again.

Testo rivelato nella casella della password

Modalità PeekPeek mode

Per impostazione predefinita, il pulsante di rivelazione della password è visualizzato.By default, the password reveal button (or "peek" button) is shown. L'utente deve continuamente premere il pulsante per vedere la password, in modo da mantenere un livello di sicurezza elevato.The user must continuously press the button to view the password, so that a high level of security is maintained.

Il valore della proprietà PasswordRevealMode non è l'unico fattore che determina se un pulsante per rivelare la password è visibile all'utente.The value of the PasswordRevealMode property is not the only factor that determines whether a password reveal button is visible to the user. Altri fattori includono se il controllo viene visualizzato oltre una larghezza minima, se il controllo PasswordBox ha lo stato attivo e se il campo di immissione del testo contiene almeno un carattere.Other factors include whether the control is displayed above a minimum width, whether the PasswordBox has focus, and whether the text entry field contains at least one character. Il pulsante di rivelazione della password viene visualizzato solo quando il controllo PasswordBox riceve lo stato attivo per la prima volta e viene immesso un carattere.The password reveal button is shown only when the PasswordBox receives focus for the first time and a character is entered. Se il controllo PasswordBox perde lo stato attivo e quindi lo riprende, il pulsante per rivelare la password non viene visualizzato di nuovo fino a quando la password non viene cancellata e vengono immessi nuovi caratteri.If the PasswordBox loses focus and then regains focus, the reveal button is not shown again unless the password is cleared and character entry starts over.

Attenzione  Nelle versioni precedenti a Windows 10 il pulsante per rivelare la password non è visualizzato per impostazione predefinita.Caution  Prior to Windows 10, the password reveal button was not shown by default. Se per la sicurezza della tua app è necessario che la password sia sempre nascosta, assicurati di impostare PasswordRevealMode su Hidden.If the security of your app requires that the password is always obscured, be sure to set PasswordRevealMode to Hidden.

Modalità Hidden e VisibleHidden and Visible modes

Gli altri valori di enumerazione di PasswordRevealMode, Hidden e Visible, nascondono il pulsante di rivelazione della password e ti permettono di gestire l'oscuramento della password a livello di programmazione.The other PasswordRevealMode enumeration values, Hidden and Visible, hide the password reveal button and let you programmatically manage whether the password is obscured.

Per nascondere sempre la password, imposta PasswordRevealMode su Hidden.To always obscure the password, set PasswordRevealMode to Hidden. Se non hai bisogno che la password sia sempre nascosta, puoi fornire un'interfaccia utente personalizzata per consentire all'utente di alternare il valore di PasswordRevealMode tra Hidden e Visible.Unless you need the password to be always obscured, you can provide a custom UI to let the user toggle the PasswordRevealMode between Hidden and Visible. È ad esempio possibile usare una casella di controllo per indicare se la password deve essere nascosta, come illustrato nell'esempio seguente.For example, you can use a check box to toggle whether the password is obscured, as shown in the following example. Puoi anche usare altri controlli, ad esempio ToggleButton, per consentire all'utente di passare da una modalità all'altra.You can also use other controls, like ToggleButton, to let the user switch modes.

Questo esempio mostra come usare un controllo CheckBox per consentire all'utente di cambiare la modalità di rivelazione di un controllo PasswordBox.This example shows how to use a CheckBox to let a user switch the reveal mode of a 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;
    }
}

Il controllo PasswordBox ha questo aspetto.This PasswordBox looks like this.

Casella della password con pulsante di rivelazione personalizzato

Scegliere la tastiera giusta per il controllo di testoChoose the right keyboard for your text control

Per aiutare gli utenti a immettere dati con la tastiera virtuale, o SIP (Soft Input Panel), puoi impostare l'ambito di input del controllo di testo in modo che corrisponda al tipo di dati che l'utente deve immettere.To help users to enter data using the touch keyboard, or Soft Input Panel (SIP), you can set the input scope of the text control to match the kind of data the user is expected to enter. PasswordBox supporta i valori Password e NumericPin dell'ambito di input.PasswordBox supports only the Password and NumericPin input scope values. Qualsiasi altro valore viene ignorato.Any other value is ignored.

Per altre informazioni su come usare gli ambiti di input, vedi Usare l'ambito di input per modificare la tastiera virtuale.For more info about how to use input scopes, see Use input scope to change the touch keyboard.

RaccomandazioniRecommendations

  • Se lo scopo della casella della password non è chiaro, usa un'etichetta o un testo segnaposto.Use a label or placeholder text if the purpose of the password box isn't clear. L'etichetta è sempre visibile, indipendentemente dal fatto che la casella di input di testo contenga o meno un valore.A label is visible whether or not the text input box has a value. Il testo segnaposto viene visualizzato all'interno della casella di input e scompare dopo che viene immesso un valore.Placeholder text is displayed inside the text input box and disappears once a value has been entered.
  • Imposta per la casella della password una larghezza appropriata per l'intervallo di valori che è possibile immettere.Give the password box an appropriate width for the range of values that can be entered. La lunghezza delle parole varia a seconda delle lingue, per cui tieni conto della localizzazione se vuoi creare un'app che possa essere usata in tutto il mondo.Word length varies between languages, so take localization into account if you want your app to be world-ready.
  • Non posizionare un altro controllo accanto a una casella di input password.Don't put another control right next to a password input box. La casella della password include un pulsante per la visualizzazione della password, per consentire agli utenti di verificare la password digitata e se posizioni un altro controllo vicino, gli utenti potrebbero visualizzare accidentalmente le password mentre cercano di interagire con l'altro controllo.The password box has a password reveal button for users to verify the passwords they have typed, and having another control right next to it might make users accidentally reveal their passwords when they try to interact with the other control. Per evitare che ciò accada, inserisci un po' di spazio tra la casella di input password e l'altro controllo oppure metti l'altro controllo sulla riga successiva.To prevent this from happening, put some spacing between the password in put box and the other control, or put the other control on the next line.
  • Prendi in considerazione se presentare due caselle della password per la creazione di un account: la prima per la nuova password e la seconda per confermarla.Consider presenting two password boxes for account creation: one for the new password, and a second to confirm the new password.
  • Mostra solo una casella della password per gli account di accesso.Only show a single password box for logins.
  • Quando una casella della password viene usata per immettere un PIN, prendi in considerazione se visualizzare una risposta immediata non appena viene immesso l'ultimo numero invece di usare un pulsante di conferma.When a password box is used to enter a PIN, consider providing an instant response as soon as the last number is entered instead of using a confirmation button.

Scaricare il codice di esempioGet the sample code

Controlli di testoText controls