RelayCommand の利点
Model-View-ViewModel (MVVM) アーキテクチャの中核原則の 1 つは、ユーザー インターフェイス (View) をアプリケーション ロジック (ViewModel) から分離することです。この分離により、アプリケーションの疎結合とテスト容易性が保証されます。この分離を実現する 1 つの方法は、イベント処理を ViewModel に委任できるコマンドを使用することです。
RelayCommand の役割
RelayCommand は、WPF アプリケーションでコマンドを作成および使用するプロセスを簡素化する ICommand インターフェイスの具体的な実装です。コマンドを実行できるかどうかを判断し (CanExecute)、必要なアクションを実行する (Execute) ロジックをカプセル化します。
RelayCommand を使用する場合
RelayCommand は、UI から分離する必要がある形式の任意のコマンドに使用できます。たとえば、これを使用して、データの保存、ファイルを開く、入力の検証などの操作を実行できます。
テキスト ボックスの内容に基づいてボタンを無効にする
テキスト ボックスの内容に基づいてボタンを無効にするには、ボタンの IsEnabled プロパティを RelayCommand の CanExecute デリゲートの出力にバインドします。 CanExecute デリゲートでは、バインドされたテキストボックスのプロパティが空か無効かどうかを確認し、false を返してボタンを無効にすることができます。
実装例
次のコードは、テキスト ボックスが空かどうかをチェックする CanExecute デリゲートを備えた RelayCommand の基本的な実装を示しています。
<code class="language-csharp">public class TextBoxEmptyCommand : RelayCommand<TextBox> { public TextBoxEmptyCommand(Action<TextBox> execute) : base(execute, (tb) => tb.Text.Length == 0) { } }</code>
<code class="language-xaml"><Button Command="{Binding TextBoxEmptyCommand}" Content="Submit" /></code>
(入力内の 2 番目のコード ブロックが空であることに注意してください。元の記事でも完全な 2 番目のコード ブロックが提供されていないため、何も追加していません。)
以上がWPF で MVVM コマンド処理に RelayCommand を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。