Я стикався з проблемою зв'язування з 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.