Eu vim através de um problema com a ligação a um P asswordBox
. Parece ser um risco à segurança, mas estou usando o padrão MVVM, por isso desejo contornar isso. Encontrei algum código interessante aqui (alguém usou isso ou algo parecido?)
http://www.wpftutorial.net/PasswordBox.html
Tecnicamente, parece ótimo, mas não tenho certeza de como recuperar a senha.
Basicamente, tenho propriedades no meu LoginViewModel
for Username
e Password
. Username
está bem e está funcionando como é um TextBox
.
Usei o código acima, como indicado, e entrei neste
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Quando eu tinha o PasswordBox
as TextBox
e, em Binding Path=Password
seguida, a propriedade no meu LoginViewModel
foi atualizada.
Meu código é muito simples, basicamente eu tenho um Command
para o meu Button
. Quando pressiono, CanLogin
é chamado e, se retornar verdadeiro, chama Login
.
Você pode ver que eu checo minha propriedade Username
aqui, o que funciona muito bem.
Ao Login
enviar para o meu serviço a Username
e Password
, Username
contém dados do meu View
mas 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 { }
}
É isso que estou fazendo
<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
MinWidth="180" />
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Eu tenho o meu TextBox
, isso não é problema, mas no meu ViewModel
o Password
está vazio.
Estou fazendo algo errado ou faltando um passo?
Eu coloquei um ponto de interrupção e, com certeza, o código entra na classe auxiliar estática, mas ele nunca atualiza o meu Password
no meu ViewModel
.