[전체소스]
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를 검색하면 된다.
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 |