속성 값이 변경될 때 이벤트를 발생시키는 방법
원하는 ImageFullPath1이라는 속성이 있습니다. 값이 변경될 때마다 이벤트를 발생시킵니다. INotifyPropertyChanged 인터페이스 사용을 알고 있지만 이 목적으로 이벤트를 활용하는 것을 선호합니다.
INotifyPropertyChanged 인터페이스는 실제로 이벤트로 구현됩니다. 소비자가 구독할 수 있는 이벤트인 PropertyChanged라는 단일 멤버가 있습니다.
안전한 구현:
다음 코드 스니펫은 다음에 대한 추가 이벤트를 통해 INotifyPropertyChanged 인터페이스의 안전한 구현을 보여줍니다. 특정 속성(ImageFullPath):
public class MyClass : INotifyPropertyChanged { private string imageFullPath; protected void OnPropertyChanged(PropertyChangedEventArgs e) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, e); } protected void OnPropertyChanged(string propertyName) { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } public string ImageFullPath { get { return imageFullPath; } set { if (value != imageFullPath) { imageFullPath = value; OnPropertyChanged("ImageFullPath"); } } } protected void OnImageFullPathChanged(EventArgs e) { EventHandler handler = ImageFullPathChanged; if (handler != null) handler(this, e); } public event PropertyChangedEventHandler PropertyChanged; public event EventHandler ImageFullPathChanged; }
이 구현은 다음을 보장합니다.
.NET 4.5의 CallerMemberAttribute:
.NET 4.5 이상의 경우 CallerMemberAttribute 하드 코딩된 코드를 제거하는 데 사용할 수 있습니다. 소스 코드의 속성 이름에 대한 문자열:
protected void OnPropertyChanged( [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "") { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } public string ImageFullPath { get { return imageFullPath; } set { if (value != imageFullPath) { imageFullPath = value; OnPropertyChanged(); } } }
위 내용은 C#에서 속성 값이 변경될 때 사용자 지정 이벤트를 발생시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!