Ich bin auf ein Problem mit der Bindung an ein P gestoßen asswordBox. Es scheint ein Sicherheitsrisiko zu sein, aber ich verwende das MVVM-Muster, daher möchte ich dies umgehen. Ich habe hier einen interessanten Code gefunden (hat jemand diesen oder einen ähnlichen Code verwendet?)
http://www.wpftutorial.net/PasswordBox.html
Es sieht technisch gut aus, aber ich bin mir nicht sicher, wie ich das Passwort abrufen soll.
Ich habe grundsätzlich Eigenschaften in meinem LoginViewModelfür Usernameund Password. Usernameist in Ordnung und funktioniert so wie es ist TextBox.
Ich habe den obigen Code wie angegeben verwendet und diesen eingegeben
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Als ich das PasswordBoxals TextBoxund Binding Path=Passworddann hatte, wurde die Eigenschaft in meinem LoginViewModelaktualisiert.
Mein Code ist sehr einfach, im Grunde habe ich einen Commandfür meinen Button. Wenn ich drücke, CanLoginwird es aufgerufen und wenn es true zurückgibt, ruft es auf Login.
Sie können sehen, dass ich meine Immobilie Usernamehier überprüfe , was großartig funktioniert.
In Loginsende ich an meinen Dienst ein Usernameund Password, Usernameenthalte Daten von meinem Viewaber PasswordistNull|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 { }
}
Das mache ich
<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
MinWidth="180" />
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Ich habe meine TextBox, ist das kein Problem, aber in meiner ViewModeldas Passwordist leer.
Mache ich etwas falsch oder verpasse ich einen Schritt?
Ich habe einen Haltepunkt gesetzt und sicher genug, dass der Code in die statische Hilfsklasse eingeht, aber er aktualisiert meinen Passwordin meinem nie ViewModel.