MVVM模式应用 之NotificationObject类
2024-10-10 03:54:00
public abstract class NotificationObject : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string propertyName) { PropertyChangedEventHandler handler = this.PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } protected void RaisePropertyChanged(params string[] propertyNames) { if (propertyNames == null) throw new ArgumentNullException("propertyNames"); foreach (var name in propertyNames) { this.RaisePropertyChanged(name); } } protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression) { var propertyName = ExtractPropertyName(propertyExpression); this.RaisePropertyChanged(propertyName); } public static string ExtractPropertyName<T>(Expression<Func<T>> propertyExpression) { if (propertyExpression == null) { throw new ArgumentNullException("propertyExpression"); } var memberExpression = propertyExpression.Body as MemberExpression; if (memberExpression == null) { throw new ArgumentException("PropertySupport_NotMemberAccessExpression_Exception", "propertyExpression"); } var property = memberExpression.Member as PropertyInfo; if (property == null) { throw new ArgumentException("PropertySupport_ExpressionNotProperty_Exception", "propertyExpression"); } var getMethod = property.GetGetMethod(true); if (getMethod.IsStatic) { throw new ArgumentException("PropertySupport_StaticExpression_Exception", "propertyExpression"); } return memberExpression.Member.Name; } }
最新文章
- 72. 求m到n之和
- 用Mockito mock普通的方法
- 在Windows server 2008 R2上安装Python3.5
- jQuery-表格以及表单
- hdu 2049 不容易系列之(4)——考新郎
- wikioi 1205 单词倒排
- Java Day 12
- C# Thread多线程学习
- ZOJ-2112-Dynamic Rankings(线段树套splay树)
- 关于oledb对Excel的读取
- USACO 4.1 Fence Loops(Floyd求最小环)
- NYOJ-1036 非洲小孩(贪心)
- [转]亿级Web系统搭建:单机到分布式集群
- 微信小程序实现瀑布流布局
- Pthread:POSIX 多线程程序设计【转】
- PHP冒泡排序-手写
- 知识点:Java 集合框架图
- Python中删除easy_install安装的包
- html05
- 三,PHP缓存机制实现页面静态化
热门文章
- nyoj 353 3D dungeon
- UVA 10194 Football (aka Soccer)
- UVA 10557 XYZZY
- 【Struts2+Spring3+Hibernate3】SSH框架整合实现CRUD_1.3
- SpringMVC 常用注解
- ASP.NET MVC- MvcPager
- Spring技术内幕——深入解析Spring架构与设计原理(一)IOC实现原理
- 连接数据库超时设置autoReconnect=true
- linux系统下安装apache与tomcat
- 【美妙的Python之二】Python初步