Я сталкивался с проблемой связывания с 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, это не проблема, но в моем пусто.ViewModelPassword
Я делаю что-то неправильно или пропускаю шаг?
Я поставил точку останова и достаточно уверенно, что код входит в статический вспомогательный класс, но он никогда не обновляет мой Passwordв моем ViewModel.