Mi sono imbattuto in un problema con il legame ad un P asswordBox
. Sembra che sia un rischio per la sicurezza, ma sto usando il modello MVVM, quindi desidero bypassarlo. Ho trovato un codice interessante qui (qualcuno ha usato questo o qualcosa di simile?)
http://www.wpftutorial.net/PasswordBox.html
Tecnicamente sembra fantastico, ma non sono sicuro di come recuperare la password.
Fondamentalmente ho proprietà nel mio LoginViewModel
per Username
e Password
. Username
va bene e funziona come è a TextBox
.
Ho usato il codice sopra come indicato e inserito questo
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Quando ho avuto PasswordBox
come a TextBox
e Binding Path=Password
quindi la proprietà nella mia è LoginViewModel
stata aggiornata.
Il mio codice è molto semplice, in pratica ne ho uno Command
per il mio Button
. Quando premo CanLogin
viene chiamato e se ritorna vero chiama Login
.
Puoi vedere che controllo la mia proprietà Username
qui che funziona alla grande.
In Login
invio al mio servizio a Username
e Password
, Username
contiene i dati dal mio View
ma lo 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 { }
}
Questo è quello che sto facendo
<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
MinWidth="180" />
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Io ho la mia TextBox
, questo non è un problema, ma nella mia ViewModel
l' Password
è vuoto.
Sto facendo qualcosa di sbagliato o mi manca un passo?
Ho inserito un punto di interruzione e sicuramente il codice entra nella classe helper statica ma non aggiorna mai il mio Password
nel mio ViewModel
.