Junior
Kam naudojama sąsaja INotifyPropertyChanged?
sobes.tech AI
Atsakymas iš AI
INotifyPropertyChanged sąsaja naudojama pranešti klientams (paprastai naudotojo sąsajos elementams), kad savybės reikšmė pasikeitė. Tai yra pagrindinis mechanizmas MVVM (Model-View-ViewModel) šablono ir duomenų susiejimo UI karkasuose, tokiuose kaip WPF.
Kai savybės reikšmė klasėje, įgyvendinančioje šią sąsają, pasikeičia:
- Iškviečiamas
PropertyChangedįvykio tvarkytojas. - Tvarkytojas gauna
PropertyChangedEventArgstipo argumentus, kuriuose yra pakeistos savybės pavadinimas. - UI elementai arba kiti klientai, prenumeravę šį įvykį, gauna pranešimą ir gali atnaujinti savo atvaizdavimą pagal naują reikšmę.
Pavyzdinė įgyvendinimo schema:
using System.ComponentModel;
using System.Runtime.CompilerServices;
public class MyData : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value) // Patikriname, ar reikšmė tikrai pasikeitė
{
_name = value;
OnPropertyChanged(); // Kviesime pranešimo metodą
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Nuo .NET 6 ir aukštesnėse versijose galima naudoti [ObservableProperty] atributą iš CommunityToolkit.Mvvm paketo, kuris automatiškai generuoja boilerplate kodą:
using CommunityToolkit.Mvvm.ComponentModel;
public partial class MyData : ObservableObject
{
[ObservableProperty]
private string _name;
}