2013-11-02 4 views
7

У меня есть существующий SecureString, что я хотел бы поставить в PasswordBox, не раскрывая .Password. Это можно сделать? Например:Put SecureString в PasswordBox

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

В этом случае DecryptString создает SecureString. Однако SecurePassword - свойство только для чтения, поэтому я не могу присвоить ему значение.

ответ

8

Вы не можете.

Однако, что вы можете сделать, это положить текст заполнителя в его место (это может быть даже "placeholder", мы используем его только для того, чтобы отобразить несколько точек в поле).

После того, как вы вставили заглушку, когда вы заходите, чтобы получить «текущий пароль» где-нибудь в вашей программе, сначала проверьте, не произошло ли событие PasswordChanged с момента ввода пароля-заполнителя. Если событие не сработало, используйте старый сохраненный пароль, если это событие сработало, используйте текущий пароль из свойства SecurePasswordPasswordBox.

+0

Это не удается, если пользователь пытается использовать функцию [* Peek *] (https://msdn.microsoft.com/en-us/windows/uwp/controls-and-patterns/password-box) пароля коробка. –

+0

Правда, если вы планируете включить функцию Peek, вы не сможете использовать этот обходной путь. –

Смежные вопросы