UI にバインドしようとしているプロパティが WPF アプリにあります。ビューモデル内でプロパティを直接更新すると、期待どおりに機能します。ただし、イベントを使用して別のクラス内からこのプロパティを更新しようとすると、バインディングが機能しないようです。よく調べてみると、これが発生したときに PropertyChangedEventHandler が null であるため、これが発生していると思います。
ViewModel 内の私のプロパティ:
public int BeatNumber
{
get
{
return beatNumber;
}
set
{
if (beatNumber != value)
{
this.beatNumber = value;
RaisePropertyChanged(() => BeatNumber);
}
}
}
ViewModel 内のイベント:
public event EventHandler GetHtmlDone = delegate { };
public void GetHTML(string url)
{
BeatNumber++;
}
通知オブジェクト:
public class NotificationObject : INotifyPropertyChanged
{
protected void RaisePropertyChanged<T>(Expression<Func<T>> action)
{
var propertyName = GetPropertyName(action);
RaisePropertyChanged(propertyName);
}
private static string GetPropertyName<T>(Expression<Func<T>> action)
{
var expression = (MemberExpression)action.Body;
var propertyName = expression.Member.Name;
return propertyName;
}
private void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
イベントが別のクラスから呼び出されたときに、このバインディングを更新するにはどうすればよいですか?