このメソッドのオーバーロードが1つありますNotificationObject
:-
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression);
プロパティのセッターには次のように記述します。
RaisePropertyChanged(() => PropertyVariable);
それはどのように機能しますか?このラムダ式からプロパティ名をどのように見つけますか?
AnExpression<TDelegate>
は、ラムダ式の抽象構文木を表します。したがって、この構文ツリーを分析して、プロパティ名を見つける必要があります。
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)
{
var memberExpr = propertyExpression.Body as MemberExpression;
if (memberExpr == null)
throw new ArgumentException("propertyExpression should represent access to a member");
string memberName = memberExpr.Member.Name;
RaisePropertyChanged(memberName);
}