BasePropertyChanged.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.ComponentModel;
  3. using System.Linq.Expressions;
  4. using System.Runtime.Serialization;
  5. namespace FWindSoft.MVVM
  6. {
  7. [DataContract]
  8. public abstract class BasePropertyChanged : INotifyPropertyChanged
  9. {
  10. public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
  11. /// <summary>
  12. /// 提交变更
  13. /// </summary>
  14. /// <param name="propertyName">变更属性名称</param>
  15. protected void RaisePropertyChanged(String propertyName = "")
  16. {
  17. if (PropertyChanged != null)
  18. {
  19. PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  20. }
  21. }
  22. protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)
  23. {
  24. if (null != propertyExpression)
  25. {
  26. var memberExpression = propertyExpression.Body as MemberExpression;
  27. if (memberExpression != null)
  28. if(this.PropertyChanged!=null)
  29. {
  30. this.PropertyChanged(this, new PropertyChangedEventArgs(memberExpression.Member.Name));
  31. }
  32. }
  33. else
  34. {
  35. throw new Exception();
  36. }
  37. }
  38. }
  39. }