У меня возникла проблема с привязкой к PasswordBox. Кажется, это угроза безопасности, но я использую шаблон 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
, и если он возвращает true, он вызывает Login
.
Вы можете видеть, что я проверяю свою собственность на Username
здесь, которая отлично работает.
В Login
я отправляю свою услугу a Username
и Password
, Username
содержит данные из моего View
, но Password
is 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
.