WPF MVVM アーキテクチャにおける RelayCommand の利点
WPF アプリケーションを構築する場合、ビューとビュー モデルの関心事を分離することは、保守性とテスト性にとって重要です。 RelayCommand は MVVM (Model-View-ViewModel) アーキテクチャで一般的に使用されるコマンドであり、この分離において重要な役割を果たします。
Relayコマンドの目的
MVVM のコマンドは、オペレーションのセマンティクスと呼び出し元を、オペレーションを実行するロジックから分離します。この分離により、ビジネス ロジックを独立してテストできるようになり、UI とロジックの疎結合が維持されます。
コマンド間の適用性
RelayCommand はフォーム内のすべてのコマンドに適用されます。 Button や MenuItem などの WPF コントロールは、View Model で宣言されたコマンドをバインドできるように、Command dependencyProperties を公開します。これらのプロパティを通じてバインドされていないイベントの場合は、インタラクション トリガーを使用してイベントを RelayCommand に関連付けることができます。
条件付きボタンが無効です
テキストボックスの状態に基づいてボタンを無効にするには、RelayCommand のオーバーロードされたコンストラクターを使用して CanExecute 述語を設定します。この述語では、バインドされたプロパティが null であるかどうかを確認し、コマンドを無効にし、したがってボタンを無効にする false を返すことができます。
RelayCommand の実装を完了
<code class="language-c#">public class RelayCommand<T> : ICommand { private readonly Action<T> _execute; private readonly Predicate<T> _canExecute; public RelayCommand(Action<T> execute, Predicate<T> canExecute = null) { _execute = execute ?? throw new ArgumentNullException(nameof(execute)); _canExecute = canExecute; } public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter); public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } public void Execute(object parameter) => _execute((T)parameter); }</code>
以上がRelayCommand を使用して WPF MVVM アーキテクチャを改善する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。