WPFのICommand

まず、目的

コードよりよい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

 

おすすめ

転載: www.cnblogs.com/yaosj/p/10948814.html