본문 바로가기
개발/C#(WPF)

WPF INotifyPropertyChanged인터페이스의 PropertyChanged이벤트 사용하기

by Piaso 2021. 8. 24.

[전체소스]

public class MainWindowViewModel : PropertyChangedBase
    {
        private string _strTest;
        public string StrTest
        {
            get => _strTest;
            set => Set(ref _strTest, value);
        }

        private int _intTest;
        public int IntTest
        {
            get => _intTest;
            set => Set(ref _intTest, value);
        }

        public MainWindowViewModel()
        {
            //이벤트 등록
            this.PropertyChanged += MainWindowViewModel_PropertyChanged;
        }

        private void MainWindowViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            //프로퍼티 이름으로 찾음
            switch (e.PropertyName)
            {
                case nameof(StrTest):
                    if (!string.IsNullOrEmpty(StrTest))
                    {
                        //TODO:
                    }
                    break;
                case nameof(IntTest):
                    if (IntTest > 0)
                    {
                        //TODO:
                    }
                    break;

                default:
                    break;
            }
        }
    }

상속받은 PropertyChangedBase는 Caliburn.Micro Mvvm프레임웍을 사용하였다.

Nuget Package에서 Caliburn.Micro를 검색하면 된다.

Nuget Package

 

PropertyChangedBase

PropertyChangedBase 내부를 보면 INotifyPropertyChanged를 상속받고 있다.

 

 public MainWindowViewModel()
 {
     this.PropertyChanged += MainWindowViewModel_PropertyChanged;
 }

 

private void MainWindowViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
    switch (e.PropertyName)
    {
        case nameof(StrTest):
            if (!string.IsNullOrEmpty(StrTest))
            {
                //TODO:
            }
            break;
        case nameof(IntTest):
            if (IntTest > 0)
            {
                //TODO:
            }
            break;

        default:
            break;
    }
}

ViewModel 생성시 PropertyChanged이벤트를 등록한 후 MainWindowViewModel_PropertyChanged이벤트에서 변동된 프로퍼티 이름으로 찾아서 처리하면 된다.

'개발 > C#(WPF)' 카테고리의 다른 글

Microsoft.Toolkit.Mvvm 사용방법  (0) 2021.08.19
WPF TextBlock에서 Text 자간 조절  (0) 2021.08.12