Junior
Για ποιο λόγο χρησιμοποιείται το interface INotifyPropertyChanged;
sobes.tech AI
Απάντηση από AI
Η διεπαφή INotifyPropertyChanged χρησιμοποιείται για την ειδοποίηση πελατών (συνήθως στοιχείων διεπαφής χρήστη) ότι η τιμή μιας ιδιότητας έχει αλλάξει. Αυτός είναι ένας βασικός μηχανισμός για την υλοποίηση του μοτίβου MVVM (Model-View-ViewModel) και το δέσιμο δεδομένων σε frameworks 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;
}