Ejemplo n.º 1
0
 /// <summary>
 /// Observes a property that implements INotifyPropertyChanged, and automatically calls DelegateCommandBase.RaiseCanExecuteChanged on property changed notifications.
 /// </summary>
 /// <typeparam name="T">The object type containing the property specified in the expression.</typeparam>
 /// <param name="propertyExpression">The property expression. Example: ObservesProperty(() => PropertyName).</param>
 protected internal void ObservesPropertyInternal <T>(Expression <Func <T> > propertyExpression)
 {
     if (_observedPropertiesExpressions.Contains(propertyExpression.ToString()))
     {
         throw new ArgumentException($"{propertyExpression.ToString()} is already being observed.",
                                     nameof(propertyExpression));
     }
     else
     {
         _observedPropertiesExpressions.Add(propertyExpression.ToString());
         PropertyObserver.Observes(propertyExpression, RaiseCanExecuteChanged);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Initiate PropertyObserverNode for a given property expression.
 /// </summary>
 /// <param name="propertyExpression">Expression representing property to be observed.</param>
 /// <param name="action">Action to be invoked when PropertyChanged event occours.</param>
 /// <param name="propertyObserver">PropertyObserver instance which owns registered event handlers.</param>
 internal static void Observes(Expression propertyExpression, Action action, PropertyObserver propertyObserver)
 {
     new PropertyObserverNode(propertyExpression, action, propertyObserver);
 }
Ejemplo n.º 3
0
 private PropertyObserverNode(Expression propertyExpression, Action action, PropertyObserver propertyObserver)
 {
     _action           = action;
     _propertyObserver = propertyObserver;
     SubscribeListeners(propertyExpression as MemberExpression);
 }