CodePaste Logo
New Snippet New Snippet Recent Snippets Recent Snippets My Snippets My Snippets Web Code Search Snippets Search
Sign inor Register
Language: C#

PropertyChangedBase class to do INotifyPropertyChanged without magic strings for Property Names

421 Views
Copy Code Show/Hide Line Numbers
namespace Nowcom.Quicksilver
{
    using System.ComponentModel;
    using System.Linq.Expressions;
    using System;
 
    public abstract class PropertyChangedBase : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
 
        public void NotifyPropertyChanged(string propertyName)
        {
           var handler = PropertyChanged;
           if (handler != null)
              handler(this, new PropertyChangedEventArgs(propertyName));
        }
 
        public void NotifyPropertyChanged<TProperty>(Expression<Func<TProperty>> property)
        {
            var lambda = (LambdaExpression)property;
 
            MemberExpression memberExpression;
            if (lambda.Body is UnaryExpression)
            {
                var unaryExpression = (UnaryExpression)lambda.Body;
                memberExpression = (MemberExpression)unaryExpression.Operand;
            }
            else memberExpression = (MemberExpression)lambda.Body;
 
            NotifyPropertyChanged(memberExpression.Member.Name);
        }
    }
}
 
//usage
 
    public class Person: PropertyChangedBase
    {
        private string _FullName;
        public string FullName
        {
            get { return _FullName; }
            set { _FullName = value; NotifyPropertyChanged(() => FullName); }
        }
    }
by Robert Kozak
  April 21, 2010 @ 3:52pm
Tags:

by Robert Kozak    April 23, 2010 @ 10:53am

Forgot to mention that I got this from Rob Eisenberg in his Build your Own MVVM Framework presentation at Mix 2010

Add a comment


Report Abuse
brought to you by:
West Wind Techologies



If you find this site useful and use it frequently please consider making a donation to support this free service.
Donate