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!