Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Linq.Expressions;
- using System.Text;
- namespace System.Windows.Input
- {
- public class ViewModelBase : INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
- public void OnPropertyChanged(string propertyName)
- {
- if (PropertyChanged != null)
- PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
- }
- /// <summary>
- /// Fires the Notify Property Changed event
- /// </summary>
- public virtual void OnPropertyChanged<T>(Expression<Func<T>> expression)
- {
- string propertyName = GetPropertyName(expression);
- PropertyChangedEventHandler handler = PropertyChanged;
- if (handler != null)
- handler(this, new PropertyChangedEventArgs(propertyName));
- }
- /// <summary>
- /// Gets the string name for the property
- /// </summary>
- protected virtual string GetPropertyName<T>(Expression<Func<T>> expression)
- {
- if (expression.NodeType != ExpressionType.Lambda)
- {
- throw new ArgumentException("Value must be a lamda expression", "expression");
- }
- if (!(expression.Body is MemberExpression))
- {
- throw new ArgumentException("The body of the expression must be a memberref", "expression");
- }
- MemberExpression memberExpression = (MemberExpression)expression.Body;
- return memberExpression.Member.Name;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment