ホームページ > バックエンド開発 > C++ > WPF UI イベント (SelectionChanged など) を MVVM の ViewModel コマンドにバインドするにはどうすればよいですか?

WPF UI イベント (SelectionChanged など) を MVVM の ViewModel コマンドにバインドするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-12 22:36:44
オリジナル
628 人が閲覧しました

How to Bind WPF UI Events (like SelectionChanged) to ViewModel Commands in MVVM?

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>
ログイン後にコピー
SelectedItemChanged イベントの処理

MyAppViewModel で、SelectedItemChangedCommand を実装し、元のイベント ハンドラーと同様に、タグの取得やグループ化などの必要なロジックを実行します。

これらの手順に従うことで、SelectionChanged イベント処理が ViewModel に正常に移動されました。これにより、MVVM 原則に従い、UI ロジックがデータ層から分離されました。

以上がWPF UI イベント (SelectionChanged など) を MVVM の ViewModel コマンドにバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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