반응형
INotifyPropertyChanged 인터페이스
객체가 속성의 변경을 클라이언트에게 알리고, UI가 동적으로 업데이트되도록 할 수 있다.
public interface INotifyPropertyChanged
PropertyChangedEventArgs 클래스
INotifyPropertyChanged 인터페이스에서 속성이 변경될 때 알리기 위해 사용되는 이벤트의 인자로 전달되는 클래스이다. 주로 PropertyChanged이벤트에 사용되며 어떤 속성이 변경되었는지를 나타내는 데에 활용된다.
PropertyChanged 이벤트
public event PropertyChangedEventHandler PropertyChanged;
PropertyChanged이벤트는 데이터 모델의 속성이 변경될 때마다 발생하며 UI나 다른 객체에서는 이를 구독하여 해당 속성의 변경을 감지하고 적절한 조치를 취할 수 있다. 주로 데이터 바인딩된 UI에서 동적 업데이트를 구현하는데 사용된다.
코드 예시
Name속성이 변경될때 onPropertyChanged메서드를 호출하여 PropertyChanged이벤트를 발생시킨다. 이렇게하면 PropertyChanged이벤트를 구독하는 다른 객체에서 Name의 속성의 변경을 감지하고 적절한 조치를 취할 수 있다.
using System.ComponentModel;
public class Person : INotifyPropertyChanged
{
private string name;
public string Name
{
get { return name; }
set
{
if (value != name)
{
name = value;
OnPropertyChanged(nameof(Name));
}
}
}
// 이벤트 정의
public event PropertyChangedEventHandler PropertyChanged;
// 속성 변경 알림 메서드
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
외부 코드에서 변경한 경우
Person클래스의 인스턴스를 생성하고 해당 인스턴스의 PropertyChanged이벤트에 대한 핸들러 등록한다. 그리고 속성을 "Piggy"로 변경하면 PropertyChanged이벤트가 발생하고 해당 핸들러에서 변경된 속성의 이름과 값을 출력하게 된다.
Person person = new Person();
person.PropertyChanged += (sender, e) =>
{
if (e.PropertyName == nameof(Person.Name))
{
Console.WriteLine($"Name property changed: {person.Name}");
}
};
person.Name = "Piggy";
반응형
'유니티 공부 > C# 문법' 카테고리의 다른 글
C# 문법 - 인스턴스 생성을 위한 new 키워드 (0) | 2023.12.14 |
---|---|
C# - 파라미터 전달방식(ref, out, in 키워드), Pass by Value(값에 의한 전달) 및 Pass by Reference(참조에 의한 전달) (0) | 2023.12.14 |
C# 문법 - Dispose 패턴 (0) | 2023.11.17 |
C# - LinkedListNode 개념, 프로퍼티, 메서드 설명 (0) | 2023.09.22 |
C# - LinkedList 개념, 프로퍼티, 메서드 설명 (0) | 2023.09.20 |
댓글