您的位置:首页 > 运维架构

WPF INotifyPropertyChanged

2013-05-18 11:41 405 查看
首先感叹一下,INotifyPropertyChanged这个单词有点长,我现在都还记不住……

其次再感叹一下,实现这个接口,属性的封装还是有点麻烦啊。

属性什么的我就喜欢 xxx{get;set;}……不得不说我是一个很懒的猿~

首先来看看一般的实现方式:

public static class NotificationObjectEx
{
/// <summary>
/// 使用:RaisePropertyChanged(vm=>vm.属性)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="propertyChangedBase"></param>
/// <param name="expression"></param>
public static void RaisePropertyChanged<T, TProperty>(this T propertyChangedBase, Expression<Func<T, TProperty>> expression) where T : NotificationObject
{
var memberExpression = expression.Body as MemberExpression;
if (memberExpression != null)
{
string propertyName = memberExpression.Member.Name;
propertyChangedBase.RaisePropertyChanged(propertyName);
}
else
throw new NotImplementedException();
}
}


View Code
于是就可以这样:this.RaisePropertyChanged(vm=>vm.UserName); 是不是觉得爽多了?麻麻再也不用担心哦拼错属性名称了~

最后,好记性不如烂笔头~~INotifyPropertyChanged、INotifyPropertyChanged、INotifyPropertyChanged、INotifyPropertyChanged、INotifyPropertyChanged……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: