OnPropertyChanged는 MVVM 패턴으로 구현할 때 ViewModel > View 방향으로 값의 변경을 알리는 일반적으로 사용하는 구문입니다. 하지만 ViewModel의 prop의 set 코드 부분이 반복되면서 코드가 길어집니다.
다음은 조금 더 보기 좋게 만드는 방법입니다.
✅OnPropertyChanged2
일반적인 OnPropertyChanged 사용 예제
private bool _isTreeSelected;
public bool IsTreeSelected
{
get => return _isTreeSelected;
set
{
//if (_isTreeSelected != value) // 변경된 값만 업데이트하고 싶을 경우
//{
_isTreeSelected = value;
OnPropertyChanged("IsTreeSelected"); // Or OnPropertyChanged(nameof(IsTreeSelected));
//}
}
}
OnPropertyChanged2 - Code
protected bool OnPropertyChanged2<T>([NotNullIfNotNull("newValue")] ref T field, T newValue, [CallerMemberName] string? propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(field, newValue))
{
return false;
}
field = newValue;
OnPropertyChanged(propertyName);
return true;
}
사용법
private object _selectedTreeItem;
public object SelectedTreeItem
{
get => _selectedTreeItem;
set => OnPropertyChanged2(ref _selectedTreeItem, value, nameof(SelectedTreeItem));
}
위와 같이 get, set 에 람다식을 적용할 수 있으면서 코드도 간결해집니다.
물론 상황에 따라서 적절하게 사용해야 하겠습니다.
✅OnPropertyChanged2 - 끝
![Buy Me A Coffee](https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png)