포스트

Nuget Package, Community Toolkit Mvvm

CommunityToolkit.Mvvm

Nuget Package, Community Toolkit Mvvm

Community Toolkit 설치

Visual Studio 에서 제공하는 강력한 기능 Nuget Package 에서 CommunityToolkit.Mvvm 을 검색하여 설치한다.

ViewModel 수정하기

  1. ViewModel 을 ObservableObject 클래스를 상속받는다.
    • ObservableObject 클래스에서 OnPropertyChanged 지원해주기 때문에 INotifyPropertyChanged 인터페이스와 관련 함수를 삭제 한다.
      1
      
      public class MainViewModel : ObservableObject
      
  2. ButtonText 속성을 수정하고 [ObservableProperty] 특성을 붙인다.
    1
    2
    
    [ObservableProperty]
    private string buttonText = "Button";
    
  3. 직접 만든 RelayCommand 클래스를 사용하지 않고CommunityToolkit 에서 지원해주는 RelayCommand 를 사용한다.
    • 특성에 [RelayCommand] 추가
    • xaml 에서 ButtonClickCommand 였다면 Command 를 제외ButtonClick 을 찾아 실행한다.
      1
      2
      3
      4
      5
      
      [RelayCommand]
      private void ButtonClick()
      {
       ButtonText = "Clicked!";
      }
      

ViewModel 전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class MainViewModel : ObservableObject
{
    [ObservableProperty]
    private string buttonText = "Button";

    public MainViewModel()
    {
        
    }

    [RelayCommand]
    private void ButtonClick()
    {
        ButtonText = "Clicked!";
    }
}
  • MainWindow.xaml.cs 의 DataContext 연결은 있어야 함
  • MainWindow.xaml 은 이전과 동일

어때? 엄청 간단해지지 않았어? 이게 마소의 힘이다…!

ObservableObject[ObservableProperty][RelayCommand] 만 이용해도 충분히 코딩할 수 있다고 본다. 앞으로 더 궁금한 것은 찾아보면서 성장할 수 있다고 생각한다.

그런데 xaml 에서 ViewModel 의 속성들이 인텔리전스되지 않아서 불편하다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.