Sobes.tech
Junior

Για ποιο λόγο χρησιμοποιείται το interface INotifyPropertyChanged;

sobes.tech AI

Απάντηση από AI

Η διεπαφή INotifyPropertyChanged χρησιμοποιείται για την ειδοποίηση πελατών (συνήθως στοιχείων διεπαφής χρήστη) ότι η τιμή μιας ιδιότητας έχει αλλάξει. Αυτός είναι ένας βασικός μηχανισμός για την υλοποίηση του μοτίβου MVVM (Model-View-ViewModel) και το δέσιμο δεδομένων σε frameworks UI όπως το WPF.

Όταν η τιμή μιας ιδιότητας σε μια κλάση που υλοποιεί αυτή τη διεπαφή αλλάζει:

  1. Καλείται ο χειριστής του γεγονότος PropertyChanged.
  2. Ο χειριστής λαμβάνει επιχειρήματα τύπου PropertyChangedEventArgs, που περιέχουν το όνομα της τροποποιημένης ιδιότητας.
  3. Τα στοιχεία 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;
}