1. 程式人生 > >wpf MVVM passwordbox密碼框繫結問題簡單解決辦法

wpf MVVM passwordbox密碼框繫結問題簡單解決辦法

      網上關於這個方案的解決辦法都比較複雜,所以才來寫這篇部落格提供一種簡單方法。

   本來沒有在意這個問題,直到突然有一個發現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();
		}