まず、目的
コードよりよいUI層の背後にあるコードはBLL層、より良いビジネス・ロジックを視野に転送され、結合(カップリングコードUI層と低い層BLL)の程度を減少させます
第二に、使用
1. RelayCommand、継承されたのICommandインターフェイスを作成します。
パブリック クラスRelayCommand:ICommandの { #regionフィールド プライベート 読み取り専用のFunc <オブジェクト、ブール> _canExecute。 プライベート 読み取り専用アクションの<Object> _EXECUTE。 #endregion #regionコンストラクタ パブリック RelayCommand(アクション<オブジェクト>が実行):これは(実行、NULL ) { } 公共 RelayCommand(アクション<オブジェクト>実行、のFunc <オブジェクト、ブール> canExecute) { 場合(実行== NULL ) スロー 新しい(例外ArgumentNullExceptionを" 実行" ); _EXECUTE = 実行します。 _canExecute = canExecute。 } #endregionの #region ICommandのメンバー パブリック イベントのEventHandler CanExecuteChangedは { 追加 { 場合(!_canExecute = ヌル) CommandManager.RequerySuggested + = 値。 } 削除 { 場合(_canExecute!=nullが) CommandManager.RequerySuggested - = 値。 } } [DebuggerStepThrough] パブリックブールCanExecute(オブジェクトパラメータ) { 戻り _canExecute == NULLを?真:_canExecute(パラメータ); } 公共 ボイドは(オブジェクトパラメータ)を実行 { _EXECUTE(パラメータ)。 } #endregion }
2.オブジェクトのプロパティを作成し、ViewModelにクラスを作成しますRelayCommand
(1)ラムダ式を使用して
パブリック クラスViewModelTest { 公共のICommand ShowMessage { 取得 { 返す 新しい RelayCommand(新しいアクションの<Object>(トン=> { 場合(T == nullの) MessageBox.Show(" PARAMを持っていない" ); 他の MessageBox.Show(t.ToString ()); }))。 } } }
(2)関数を使用して
パブリック クラスViewModelTest { プライベート ボイドUpdateNameExecute(オブジェクトのパラメータ) { MessageBox.Show("笑" ); } プライベート ブールCanUpdateNameExecute(オブジェクトパラメータ) { 戻り 真。 } 公共のICommand ShowMessageは { 取得 { 戻り 新しいRelayCommand(UpdateNameExecute、CanUpdateNameExecute)を、 } } }
3.背景クラスインターフェースは、コンテキストオブジェクトの内容が割り当てられているビューモデル
DataContextの= 新しい ViewModelTest();
命名4.結合界面
(1)パラメータなし
<ボタン幅= " 60 "高さ= " 30 "コマンド= " {ShowMessageバインディング} " />
(2)パラメータを持ちます
<ボタン幅= " 60 "高さ= " 30 "コマンド= " {バインディングShowMessageが} " CommandParameterが= " PARAMを有します" />
参考:
https://www.cnblogs.com/weiweiboqi/p/4682136.html