Dreamine.ViewModels Ver.1.0.2
Loading...
Searching...
No Matches
ViewModelBase.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Linq;
5using System.Runtime.CompilerServices;
6using System.Text;
7using System.Threading.Tasks;
8
10{
15 public abstract partial class ViewModelBase : INotifyPropertyChanged
16 {
18 public event PropertyChangedEventHandler ? PropertyChanged;
19
24 protected void OnPropertyChanged([CallerMemberName] string propertyName = null!)
25 {
26 PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
27 }
28
37 protected bool SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null!)
38 {
39 if (EqualityComparer<T>.Default.Equals(field, value))
40 return false;
41
42 field = value;
43 OnPropertyChanged(propertyName);
44 return true;
45 }
46
52 protected virtual void OnCommandChanged(string commandName)
53 {
54 // 필요 시 커맨드 이름 기반으로 RaiseCanExecuteChanged 구현 가능
55 }
56 }
57}
Dreamine MVVM의 모든 ViewModel이 상속하는 기본 클래스입니다. INotifyPropertyChanged를 구현하며, 속성 변경 알림 기능을 제공합니다.
PropertyChangedEventHandler? PropertyChanged
void OnPropertyChanged([CallerMemberName] string propertyName=null!)
지정된 속성 이름으로 PropertyChanged 이벤트를 발생시킵니다.
virtual void OnCommandChanged(string commandName)
RelayCommand의 CanExecuteChanged를 수동으로 트리거할 수 있도록 도와주는 확장 포인트입니다. Source Generator가 필요 시 여기를 호출하도록 생성합...
bool SetProperty< T >(ref T field, T value, [CallerMemberName] string propertyName=null!)
백킹 필드를 설정하고 값이 변경되었을 경우 PropertyChanged를 발생시킵니다.