ホームページ > バックエンド開発 > C++ > RelayCommand を使用して WPF MVVM アーキテクチャを改善する理由

RelayCommand を使用して WPF MVVM アーキテクチャを改善する理由

Mary-Kate Olsen
リリース: 2025-01-17 12:27:10
オリジナル
746 人が閲覧しました

Why Use RelayCommand to Improve WPF MVVM Architecture?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート