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 LoginViewModel
für Username
und Password
. Username
ist 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 PasswordBox
als TextBox
und Binding Path=Password
dann hatte, wurde die Eigenschaft in meinem LoginViewModel
aktualisiert.
Mein Code ist sehr einfach, im Grunde habe ich einen Command
für meinen Button
. Wenn ich drücke, CanLogin
wird es aufgerufen und wenn es true zurückgibt, ruft es auf Login
.
Sie können sehen, dass ich meine Immobilie Username
hier überprüfe , was großartig funktioniert.
In Login
sende ich an meinen Dienst ein Username
und Password
, Username
enthalte Daten von meinem View
aber Password
istNull|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 ViewModel
das Password
ist 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 Password
in meinem nie ViewModel
.