WPF UI イベント (SelectionChanged など) を MVVM の ViewModel コマンドにバインドします
MVVM パターンは、UI ロジックをデータ層から分離することを推奨しています。このため、ViewModel で UI イベントを処理することが重要です。提供されたコード例では、SelectionChanged イベントはコードビハインドで処理されます。このイベントを ViewModel に移動する方法を見てみましょう。
UI イベントをコマンドにバインドする
WPF は、データ バインディングと呼ばれる強力な機能を提供します。これにより、UI 要素を ViewModel のプロパティまたはコマンドにバインドできるようになります。この例では、contactsList の SelectionChanged イベントを ViewModel のコマンドにバインドしています。
EventTriggers と InvokeCommandAction を使用する
これを行うには、Windows.Interactivity 名前空間の EventTrigger と InvokeCommandAction を使用できます。例は次のとおりです:
<code class="language-xml"><ListBox ...> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <i:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}" /> </i:EventTrigger> </i:Interaction.Triggers> </ListBox></code>
「i」名前空間を参照
EventTrigger と InvokeCommandAction を使用するには、System.Windows.Interactivity アセンブリを参照する必要があります。プロジェクトの参照パネルを開き、参照の追加 > 拡張機能 に移動します。
ViewModel へのバインド コマンドViewModel で、イベントを処理するパブリック コマンドを作成します。
コマンドをウィンドウの DataContext にバインドします:
<code class="language-csharp">public ICommand SelectedItemChangedCommand { get; }</code>
<code class="language-csharp">this.DataContext = new MyAppViewModel();</code>
MyAppViewModel で、SelectedItemChangedCommand を実装し、元のイベント ハンドラーと同様に、タグの取得やグループ化などの必要なロジックを実行します。
これらの手順に従うことで、SelectionChanged イベント処理が ViewModel に正常に移動されました。これにより、MVVM 原則に従い、UI ロジックがデータ層から分離されました。
以上がWPF UI イベント (SelectionChanged など) を MVVM の ViewModel コマンドにバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。