2013-11-02 11 views
7

Ho una SecureString esistente che vorrei mettere in un PasswordBoxsenza rivelare il .Password. Può essere fatto? Ad esempio:Put SecureString in PasswordBox

tbPassword.SecurePassword = DecryptString(Properties.Settings.Default.proxyPassword); 

In questo caso DecryptString produce una SecureString. Tuttavia, SecurePassword è una proprietà di sola lettura, quindi non posso assegnare un valore ad esso.

risposta

8

Non è possibile.

Tuttavia, ciò che si può fare è inserire il testo segnaposto nella sua posizione (può anche essere "placeholder", lo stiamo solo usando per far apparire alcuni punti nella casella).

Dopo aver inserito il segnaposto, quando si va a recuperare la "password corrente" da qualche parte nel programma, controllare prima se l'evento PasswordChanged è stato attivato da quando è stata immessa la password segnaposto. Se l'evento non è stato attivato, utilizzare la vecchia password memorizzata, se l'evento è stato attivato, utilizzare la password corrente dalla proprietà SecurePassword di PasswordBox.

+0

Questo errore si verifica quando l'utente tenta di utilizzare la funzione [* Peek *] (https://msdn.microsoft.com/en-us/windows/uwp/controls-and-patterns/password-box) della password scatola. –

+0

È vero che se si intende abilitare la funzione Peek non sarà possibile utilizzare questa soluzione alternativa. –