Me he encontrado con un problema con la unión a un P asswordBox
. Parece que es un riesgo de seguridad, pero estoy usando el patrón MVVM, así que deseo evitarlo. Encontré un código interesante aquí (¿alguien ha usado esto o algo similar?)
http://www.wpftutorial.net/PasswordBox.html
Técnicamente se ve muy bien, pero no estoy seguro de cómo recuperar la contraseña.
Básicamente tengo propiedades en mi LoginViewModel
para Username
y Password
. Username
está bien y funciona como es un TextBox
.
Usé el código anterior como se indicó e ingresé esto
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Cuando tuve el PasswordBox
como TextBox
y Binding Path=Password
entonces la propiedad en mi LoginViewModel
fue actualizado.
Mi código es muy simple, básicamente tengo un Command
para mi Button
. Cuando presiono se CanLogin
llama y si devuelve verdadero, llama Login
.
Puedes ver que reviso mi propiedad Username
aquí, lo que funciona muy bien.
En Login
envío a lo largo de mi servicio una Username
y Password
, Username
contiene datos de mi View
, pero Password
esNull|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 { }
}
Esto es lo que estoy haciendo
<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
MinWidth="180" />
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Tengo mi TextBox
, esto no es problema, pero en mi ViewModel
el Password
usuario está vacía.
¿Estoy haciendo algo mal o me falta un paso?
Puse un punto de interrupción y, efectivamente, el código ingresó a la clase auxiliar estática, pero nunca actualiza mi Password
en mi ViewModel
.