プロパティ値の変更時にイベントを発生させる方法
問題の説明:
ImageFullPath1 などの特定のプロパティの値が変更されるたびにイベントをトリガーします。 INotifyPropertyChanged は既知のソリューションですが、イベント ベースのアプローチをお勧めします。
回答:
イベントを使用してプロパティ変更通知を実装するには、INotifyPropertyChanged インターフェイスを利用します。
public class MyClass : INotifyPropertyChanged { // ... }
INotifyPropertyChanged インターフェイスは PropertyChanged イベントを定義します消費者が購読できるもの。このイベントをトリガーするには、OnPropertyChanged メソッドを実装します。
protected void OnPropertyChanged(PropertyChangedEventArgs e) { // ... } protected void OnPropertyChanged(string propertyName) { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); }
ImageFullPath1 プロパティの場合、次のようにセッターを更新します。
public string ImageFullPath1 { get { ... } set { if (value != ImageFullPath1) { ImageFullPath1 = value; OnPropertyChanged(nameof(ImageFullPath1)); } } }
または、特定のプロパティに対して追加のイベントを作成できます。 :
protected void OnImageFullPath1Changed(EventArgs e) { // ... } public event EventHandler ImageFullPath1Changed;
プロパティ セッターに次のように追加します。 OnPropertyChanged.
後の OnImageFullPath1Changed(EventArgs.Empty) .NET 4.5 で改善されたコード:
.NET 4.5 では、より簡潔な実装のために CallerMemberNameAttribute を使用できます。
protected void OnPropertyChanged( [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "") { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); }
以上がC# でプロパティ値が変更されたときにイベントをトリガーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。