Maison >développement back-end >C++ >Comment déclencher un événement personnalisé lorsqu'une valeur de propriété change en C# ?
Comment déclencher un événement lorsque la valeur d'une propriété change
Vous avez une propriété nommée ImageFullPath1 que vous souhaitez déclenche un événement chaque fois que sa valeur change. Bien que vous sachiez utiliser l'interface INOtifyPropertyChanged, vous préférez utiliser des événements à cette fin.
L'interface INOtifyPropertyChanged est, en fait, implémentée avec des événements. Il a un seul membre, PropertyChanged, qui est un événement auquel les consommateurs peuvent souscrire.
Mise en œuvre sécurisée :
Le code suivant L'extrait démontre une implémentation sécurisée de l'interface INOtifyPropertyChanged avec un événement supplémentaire pour une propriété spécifique. (ImageFullPath) :
public class MyClass : INotifyPropertyChanged { private string imageFullPath; protected void OnPropertyChanged(PropertyChangedEventArgs e) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, e); } protected void OnPropertyChanged(string propertyName) { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } public string ImageFullPath { get { return imageFullPath; } set { if (value != imageFullPath) { imageFullPath = value; OnPropertyChanged("ImageFullPath"); } } } protected void OnImageFullPathChanged(EventArgs e) { EventHandler handler = ImageFullPathChanged; if (handler != null) handler(this, e); } public event PropertyChangedEventHandler PropertyChanged; public event EventHandler ImageFullPathChanged; }
Cette implémentation garantit les éléments suivants :
CallerMemberAttribute dans .NET 4.5 :
Pour .NET 4.5 et supérieur, le CallerMemberAttribute peut être utilisé pour éliminer la chaîne codée en dur pour les noms de propriétés dans le code source :
protected void OnPropertyChanged( [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "") { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } public string ImageFullPath { get { return imageFullPath; } set { if (value != imageFullPath) { imageFullPath = value; OnPropertyChanged(); } } }
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!