Z wiązania z P Mam natknąć się na problem asswordBox. Wygląda na to, że stanowi to zagrożenie bezpieczeństwa, ale używam wzorca MVVM, więc chcę to ominąć. Znalazłem tutaj interesujący kod (czy ktoś używał tego lub czegoś podobnego?)
http://www.wpftutorial.net/PasswordBox.html
Technicznie wygląda świetnie, ale nie jestem pewien, jak odzyskać hasło.
Zasadniczo mam właściwości w moim LoginViewModelfor Usernamei Password. Usernamejest w porządku i działa tak jak jest TextBox.
Użyłem powyższego kodu i podałem go
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Kiedy miałem PasswordBoxjako a, TextBoxa Binding Path=Passwordnastępnie właściwość LoginViewModelzostała zaktualizowana.
Mój kod jest bardzo prosty, w zasadzie mam Commanddla siebie Button. Kiedy naciskam, CanLoginjest wywoływany, a jeśli zwraca true, wywołuje Login.
Widzisz, sprawdzam tutaj swoją nieruchomość Username, która działa świetnie.
W Loginwyślę razem z moim naprawiać Usernamei Password, Usernamezawiera dane od mojego View, ale PasswordjestNull|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 { }
}
To właśnie robię
<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
MinWidth="180" />
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Mam TextBox, to nie jest problem, ale w moim jest pusty.ViewModelPassword
Czy robię coś złego lub brakuje mi kroku?
Ustawiłem punkt przerwania i na pewno kod wchodzi do statycznej klasy pomocnika, ale nigdy nie aktualizuje mojego Passwordw moim ViewModel.