> 백엔드 개발 > C++ > SelectionChanged와 같은 WPF UI 이벤트를 MVVM의 ViewModel 명령에 바인딩하는 방법은 무엇입니까?

SelectionChanged와 같은 WPF UI 이벤트를 MVVM의 ViewModel 명령에 바인딩하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-12 22:36:44
원래의
630명이 탐색했습니다.

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의 속성이나 명령에 바인딩할 수 있습니다. 이 예에서는 ContactList의 SelectionChanged 이벤트를 ViewModel의 명령에 바인딩합니다.

EventTrigger 및 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 로직을 데이터 계층에서 분리했습니다.

위 내용은 SelectionChanged와 같은 WPF UI 이벤트를 MVVM의 ViewModel 명령에 바인딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿