Tôi đã đi qua một vấn đề với ràng buộc vào một P asswordBox. Có vẻ như đó là một rủi ro bảo mật nhưng tôi đang sử dụng mẫu MVVM vì vậy tôi muốn bỏ qua điều này. Tôi tìm thấy một số mã thú vị ở đây (có ai đã sử dụng cái này hoặc cái gì đó tương tự không?)
http://www.wpftutorial.net/PasswordBox.html
Về mặt kỹ thuật có vẻ tuyệt vời, nhưng tôi không chắc chắn làm thế nào để lấy lại mật khẩu.
Tôi về cơ bản có tài sản của tôi LoginViewModelcho Usernamevà Password. Usernamelà tốt và đang làm việc như nó a TextBox.
Tôi đã sử dụng mã ở trên như đã nêu và nhập này
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Khi tôi có PasswordBoxmột TextBoxvà Binding Path=Passwordsau đó tài sản trong tôi LoginViewModelđã được cập nhật.
Mã của tôi rất đơn giản, về cơ bản tôi có một Commandcho tôi Button. Khi tôi nhấn nó CanLoginđược gọi và nếu nó trả về đúng thì nó gọi Login.
Bạn có thể thấy tôi kiểm tra tài sản của tôi Usernameở đây hoạt động tuyệt vời.
Trong Logintôi gửi cùng với dịch vụ của tôi a Usernamevà Password, Usernamechứa dữ liệu từ của tôi Viewnhưng Passwordlà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 { }
}
Đây là những gì tôi đang làm
<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
MinWidth="180" />
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Tôi có của tôi TextBox, đây là không có vấn đề, nhưng trong tôi ViewModelsự Passwordtrống.
Tôi đang làm gì đó sai hay thiếu một bước?
Tôi đặt một điểm dừng và chắc chắn rằng mã vào lớp trình trợ giúp tĩnh nhưng nó không bao giờ cập nhật Passwordtrong tôi ViewModel.