Junior
Интерфейси INotifyPropertyChanged барои чӣ истифода мешавад?
sobes.tech AI
Ҷавоб аз AI
Интерфейси INotifyPropertyChanged барои огоҳ кардани мизоҷон (одатан унсурҳои интерфейси корбар) истифода мешавад, ки арзиши хусусият тағйир ёфтааст. Ин механизм калидӣ барои иҷрои намунаи MVVM (Model-View-ViewModel) ва пайвасткунии маълумот дар рамзҳои UI монанди WPF мебошад.
Вақте ки арзиши хусусият дар синфе, ки ин интерфейсро иҷро мекунад, тағйир меёбад:
- Ҳамлагари ҳодиса
PropertyChangedдаъват мешавад. - Ҳамлагар аргументҳои навъи
PropertyChangedEventArgsмегирад, ки номи хусусияти тағйирёфта дар он аст. - Унсурҳои UI ё дигар мизоҷон, ки ба ин ҳодиса обуна шудаанд, огоҳӣ мегиранд ва метавонанд намоиши худро мувофиқи арзиши нав навсозӣ кунанд.
Маслиҳати иҷроиш:
using System.ComponentModel;
using System.Runtime.CompilerServices;
public class MyData : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value) // Санҷед, ки арзиш воқеан тағйир ёфтааст
{
_name = value;
OnPropertyChanged(); // Даъвати усули огоҳӣ
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Дар .NET 6 ва версияҳои баъдӣ, шумо метавонед аз атрибути [ObservableProperty] дар баста CommunityToolkit.Mvvm барои тавлиди автоматии коди boilerplate истифода баред:
using CommunityToolkit.Mvvm.ComponentModel;
public partial class MyData : ObservableObject
{
[ObservableProperty]
private string _name;
}