мне интересно, если это вообще возможно, со всей безопасностью вовлеченной с контролем PasswordBox:Установки начального значения PasswordBox
У меня есть XAML форма (C#/WPF), где пользователи будут конфигурировать доступ к базе данных. В этой форме я использую PasswordBox для получения пароля пользователя SQL Server.
Поскольку эти данные сохраняются на диске для будущего использования (в файле базы данных SQL Server CE, защищенным паролем), при первом запуске не установлен пароль, если пользователь возвращается и ему необходимо отредактировать соединение SQL для некоторых разум, тогда может быть пароль, сохраненный из предыдущей конфигурации (если только он не использовал проверку подлинности Windows, а не аутентификацию пользователя SQL)
Итак, я хочу показать пустой пароль в первом прогоне, но если уже установлен пароль, пользователь возвращается, я хочу показать X номер '*' (чтобы указать, что есть пароль на месте.
Поскольку парольBox.Password не может быть подключен, я могу выбрать только всегда показывать его пустым или всегда показывать фиксированное число '*' (путем установки пароля по умолчанию, который фактически не представляет реальный пароль).
Есть ли какие-либо альтернативы (помимо чего-то вроде помощника PasswordBox, который вводит привязку конечно - я бы предпочел не идти по этому пути, так как может быть причина, по которой я не рассматривал для MS решение не делать ее связной даже к SecureString)?
@ faflo10: да, я разделяю View, ViewModel и Model, но, конечно, может нарушить эти правила, если это абсолютно необходимо. Пароль, считываемый из файла SQLce (если таковой имеется), хранится в моей модели, а пароль - в окне просмотра – 537mfb
. Вы можете прочитать из файла и написать код, содержащий сообщение «PasswordBox.Password =« ReadPassword »;' –
' PasswordBox' действительно не подходит для MVVM, но вы можете написать прикрепленное поведение, чтобы установить ['PasswordBox.SecurePassword'] (https://msdn.microsoft.com/en-us/library/system.windows.controls.passwordbox .securepassword.aspx) (что является «SecureString»). Это поведение должно иметь доступ к существующему паролю (опять же как «SecureString» в некотором классе «Пользователь») или помещать некоторый * поддельный * пароль (но тогда вы можете просто использовать «PasswordBox.Password»), если, например, Установлен 'User.IsLogged'. – Sinatr