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
Libérer: 2024-12-30 13:33:10
original
887 Les gens l'ont consulté

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
{
    // ...
}
Copier après la connexion

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));
}
Copier après la connexion

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

public string ImageFullPath1
{
    get { ... }
    set
    {
        if (value != ImageFullPath1)
        {
            ImageFullPath1 = value;
            OnPropertyChanged(nameof(ImageFullPath1));
        }
    }
}
Copier après la connexion

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;
Copier après la connexion

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));
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal