Maison >développement back-end >C++ >Comment déclencher un événement lorsqu'une valeur de propriété change en C# ?

Comment déclencher un événement lorsqu'une valeur de propriété change en C# ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-30 13:33:10912parcourir

How to Trigger an Event When a Property Value Changes in C#?

Comment déclencher un événement sur un changement de valeur de propriété

Description du problème :

Vous voulez pour déclencher un événement chaque fois que la valeur d'une propriété spécifique, telle que ImageFullPath1, change. Bien que INotifyPropertyChanged soit une solution connue, vous préférez une approche basée sur les événements.

Réponse :

Pour implémenter la notification de changement de propriété à l'aide d'événements, utilisez l'interface INotifyPropertyChanged :

public class MyClass : INotifyPropertyChanged
{
    // ...
}

L'interface INotifyPropertyChanged définit un événement PropertyChanged auquel les consommateurs peuvent s'abonner. Pour déclencher cet événement, implémentez la méthode OnPropertyChanged :

protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
    // ...
}

protected void OnPropertyChanged(string propertyName)
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

Pour la propriété ImageFullPath1, mettez à jour le setter comme suit :

public string ImageFullPath1
{
    get { ... }
    set
    {
        if (value != ImageFullPath1)
        {
            ImageFullPath1 = value;
            OnPropertyChanged(nameof(ImageFullPath1));
        }
    }
}

Alternativement, pour des propriétés spécifiques, vous pouvez créer des événements supplémentaires :

protected void OnImageFullPath1Changed(EventArgs e)
{
    // ...
}

public event EventHandler ImageFullPath1Changed;

Dans le paramètre de propriété, ajoutez OnImageFullPath1Changed(EventArgs.Empty) après OnPropertyChanged.

Code amélioré avec .NET 4.5 :

Avec .NET 4.5, vous pouvez utiliser CallerMemberNameAttribute pour une implémentation plus concise :

protected void OnPropertyChanged(
    [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn