wpf MVVM passwordbox密碼框繫結問題簡單解決辦法
阿新 • • 發佈:2019-02-10
網上關於這個方案的解決辦法都比較複雜,所以才來寫這篇部落格提供一種簡單方法。
本來沒有在意這個問題,直到突然有一個發現passwordbox為了安全性把password屬性做成了非依賴屬性,不能進行繫結也不能進行屬性值變化監聽,網上搜了一些資料發現解決辦法都比較複雜,偶然發現國外一個mvp的視訊教程有提到這個登陸介面,裡面包含密碼框繫結的簡單解決辦法,下面共享出來,方便大家。
解決辦法很簡單,把密碼框當作一個命令引數傳遞給登陸按鍵的繫結命令即可。下面貼出xaml程式碼和後端程式碼。
前端程式碼:
<PasswordBox x:Name="passwordBox" /> <Button Content="Login" IsDefault="True" Command="{Binding LoginCommand}" CommandParameter="{Binding ElementName=passwordBox}"/>
後端程式碼:
private RelayCommand<PasswordBox> _loginCommand; /// <summary> /// Gets the LoginCommand. /// </summary> public RelayCommand<PasswordBox> LoginCommand { get { return _loginCommand ?? (_loginCommand = new RelayCommand<PasswordBox>(ExecuteLoginCommand, (s) => { return (!string.IsNullOrEmpty(Account) && !string.IsNullOrEmpty(s.Password)); })); } } private void ExecuteLoginCommand(PasswordBox box) { Debug.WriteLine(box.Password); LoginAction(); }