J'ai rencontré un problème avec la liaison à un PasswordBox. Il semble qu'il est un risque pour la sécurité, mais je suis en utilisant le pattern MVVM je souhaite donc passer outre. J'ai trouvé intéressant de code ici (quelqu'un a utilisé ce ou quelque chose de similaire?)
http://www.wpftutorial.net/PasswordBox.html
Techniquement ressemble beaucoup, mais je suis pas sûr de savoir comment récupérer le mot de passe.
J'ai pratiquement propriétés dans mon LoginViewModel
pour Username
et Password
. Username
est fine et travaille comme c'est un TextBox
.
J'ai utilisé le code ci-dessus comme indiqué et est entré dans ce
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Quand j'ai eu l' PasswordBox
comme TextBox
et Binding Path=Password
alors la propriété dans mes LoginViewModel
a été mis à jour.
Mon code est très simple, en gros j'ai un Command
mon Button
. Quand je le presse CanLogin
est appelée et si elle retourne true il appelle Login
.
Vous pouvez le voir j'ai vérifier ma propriété pour Username
ici qui fonctionne très bien.
En Login
- je envoyer à mon service un Username
et Password
, Username
contient des données à partir de mon View
mais Password
est 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 { }
}
C'est ce que je fais
<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
MinWidth="180" />
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
J'ai mon TextBox
, ce n'est pas un problème, mais dans mon ViewModel
le Password
est vide.
Suis-je en train de faire quelque chose de mauvais ou raté une étape?
J'ai mis un point d'arrêt et bien sûr le code de l'entrée de la statique de la classe helper mais c'est jamais les mises à jour de mon Password
mon ViewModel
.