MVVM 패턴으로 개발을 하다보면 서로 다른 ViewModel 끼리나 ViewModel에서 View로 1:1 혹은 1:N으로 이벤트를 전달해야 하는 경우들이 많습니다. 이 경우 static class를 생성해서 전역에서 접근 가능한 event를 만들어 처리하거나 service class를 만들어서 의존성 주입을 통해 여러 ViewModel에서 접근 가능한 event 변수를 만들어 처리하는 등 여러가지 방법이 있습니다만 CommunityToolkit에서 제공하는 WeakReferenceMessenger 클래스를 사용하면 간단히 Pub/Sub 형태의 이벤트 큐를 구현 할 수 있습니다. 단순해서 사용하기 편리하지만 실무에서는 event 스트림에 debounce time을 적용한다거나 이벤트 버퍼를 ring 버..
지난번 글에서 ObservableObject를 상속받는 MainWindowViewModel class를 ViewModels 폴더에 생성하고 MainWindow.xaml 뷰의 DataContext에 바인딩 하는것 까지 설명을 했습니다. 자, 이렇게 생성된 ViewModel에 멤버 변수들을 선언하고 이것들을 View에 TextBox 컨트롤에 바인딩을 먼저 해보겠습니다. 기존 MVVM 패턴으로 코딩할때 가장 짜증스러운 부분이 View와 Binding하기위해 멤버변수를 선언하고 값이 변경되면 PropertyChange 이벤트를 Notify해주는 코드를 변수 하나 하나 마다 아래와같이 선언해 줘야했습니다. namespace MyTestApp.ViewModels { public class MainWindowView..
※. Visual Studio 2022 기준 스크린 샷입니다. 1. Visual Studio를 열고 새로운 WPF 프로젝트를 하나 생성합니다. WPF로 검색해서 WPF Application 프로젝트 템플릿을 찾아서 선택합니다. 프로젝트 생성 경로와 솔루션 이름 프로젝트명을 지정합니다. 여기서는 .Net 6.0 이상을 기준으로 설명하므로 6.0을 선택합니다. 프로젝트 생성이 완료되면 Solution Explorer에 아래와같이 생성된 솔루션과 프로젝트 내의 파일을 확인합니다. 2. NuGet Package 설치하기 NuGet Package Manager에서 아래 패키지들을 설치하거나 Solution Explorer에서 프로젝트(MyTestApp)를 double-click해서 프로젝트 파일을 열어 아래의 P..