簡易MVVM実装におけるRelayCommandパターンの詳細説明
MVVM (Model-View-ViewModel) アーキテクチャでは、複数のコマンドを作成するのは面倒な作業になることがあります。この問題により、単一の ICommand クラスを使用する簡素化されたアプローチなど、さまざまな解決策が提案されました。
簡略化されたコマンド実装
実装された ICommand クラスには、OnExecute (void を返す) と OnCanExecute (bool を返す) の 2 つのデリゲート メソッドが含まれています。コンストラクターでは、これらのメソッドがパラメーターとして渡されます。 ICommand インターフェイスの CanExecute メソッドと Execute メソッドは、対応するデリゲート メソッドを呼び出します。
簡略化されたコマンドの利点
代替手段を探す: RelayCommand
Karl Shifflet が実証したように、コマンドを簡素化する一般的な代替手段は RelayCommand です。 Action
RelayCommand の実装
RelayCommand は Predicate
RelayCommand の利点
使用例
簡略化されたコマンドと RelayCommand は、ViewModel で同様の方法で使用できます。
<code>public class MyViewModel { // 简化命令 public ICommand DoSomethingCommand { get; set; } // RelayCommand public ICommand DoSomethingCommand2 { get; set; } public MyViewModel() { // 简化命令 DoSomethingCommand = new TestCommand(CanDoSomething, DoSomeImportantMethod); // RelayCommand DoSomethingCommand2 = new RelayCommand(CanDoSomething, DoSomeImportantMethod); } // ... }</code>
結論
RelayCommand は優れたソリューションを提供しますが、プロパティ変更の自動通知やパラメーターのサポートなどの追加の利点も提供します。どちらの方法でも MVVM コマンドの実装を効果的に簡素化できるため、開発者は定型コードではなくアプリケーション ロジックに集中できるようになります。
以上がRelayCommand と簡易 ICommand:どちらが MVVM に最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。