Я сталкивался с проблемой связывания с P asswordBox
. Кажется, это угроза безопасности, но я использую шаблон MVVM, поэтому я хочу обойти это. Я нашел интересный код здесь (кто-нибудь использовал это или что-то подобное?)
http://www.wpftutorial.net/PasswordBox.html
Технически это выглядит великолепно, но я не уверен, как восстановить пароль.
У меня в основном есть свойства в моем LoginViewModel
для Username
и Password
. Username
хорошо и работает как есть TextBox
.
Я использовал код выше, как указано, и ввел этот
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Когда я имел PasswordBox
как, TextBox
а Binding Path=Password
затем свойство в моем LoginViewModel
было обновлено.
Мой код очень прост, в основном у меня есть Command
для моего Button
. Когда я нажимаю, он CanLogin
вызывается, и если он возвращает истину, он звонит Login
.
Вы можете видеть, что я проверяю свою собственность Username
здесь, которая прекрасно работает.
В Login
Посылаю вместе с моей службой а Username
и Password
, Username
содержит данные от моего , View
но Password
этоNull|Empty
private DelegateCommand loginCommand;
public string Username { get; set; }
public string Password { get; set; }
public ICommand LoginCommand
{
get
{
if (loginCommand == null)
{
loginCommand = new DelegateCommand(
Login, CanLogin );
}
return loginCommand;
}
}
private bool CanLogin()
{
return !string.IsNullOrEmpty(Username);
}
private void Login()
{
bool result = securityService.IsValidLogin(Username, Password);
if (result) { }
else { }
}
Это то что я делаю
<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
MinWidth="180" />
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
У меня есть TextBox
, это не проблема, но в моем пусто.ViewModel
Password
Я делаю что-то неправильно или пропускаю шаг?
Я поставил точку останова и достаточно уверенно, что код входит в статический вспомогательный класс, но он никогда не обновляет мой Password
в моем ViewModel
.