internal void RemoveElementPropertyChangeListener(IPropertyChangeListener listener, RadProperty radProperty)
        {
            List <IPropertyChangeListener> changeListeners = GetPropertyChangeListeners(radProperty);

            if (changeListeners == null)
            {
                return;
            }

            changeListeners.Remove(listener);
        }
        /// <summary>
        /// Subscribe for property-change event for given RadProperty for all elements in the tree.
        /// </summary>
        /// <param name="listener"></param>
        /// <param name="radProperty"></param>
        internal void AddElementPropertyChangeListener(IPropertyChangeListener listener, RadProperty radProperty)
        {
            List <IPropertyChangeListener> changeListeners = GetPropertyChangeListeners(radProperty);

            if (changeListeners == null)
            {
                changeListeners = new List <IPropertyChangeListener>(1);
                elementPropertyChangeListeners[radProperty.PropertyKey] = changeListeners;
            }

            if (!changeListeners.Contains(listener))
            {
                changeListeners.Add(listener);
            }
        }
Пример #3
0
        public BindingExpression(BindingExpressionKey key, BindingBase binding, PropertyEntry<object> propertyEntry)
        {
            this.propertyEntry = propertyEntry;
            Binding = binding;
            this.Key = key;
            if(IsTwoWayBinding && string.IsNullOrEmpty(((Binding)this.Binding).Path))
                Guard.InvalidOperation(SR.TwoWayBindingRequiresPathExceptionMessage);
            WpfBindingMode mode = IsTwoWayBinding ? WpfBindingMode.TwoWay : WpfBindingMode.OneWay;
            WpfBinding wpfBinding = new WpfBinding("PropertyValue." + ((Binding)binding).Path) { Source = propertyEntry, Mode = mode};

            if(Property == null)
                Guard.ArgumentException("propertyName");
            MethodInfo createMethod = typeof(PropertyChangeListener<>).MakeGenericType(key.property.PropertyType).GetMethod("Create", BindingFlags.Static | BindingFlags.Public);
            listener = (IPropertyChangeListener)createMethod.Invoke(null, new object[] { wpfBinding, new Action<object>(UpdateTargetProperty), Property.GetValue(Control) });

            if(IsTwoWayBinding)
                Property.AddValueChanged(Control, OnTargerPropertyChanged);
        }
 public void AddCallback(IPropertyChangeListener callback)
 {
     callbacks.Add(callback);
 }
Пример #5
0
 // Use this for initialization
 public void Register(IPropertyChangeListener listener)
 {
     listeners.Add(listener);
     GameObject.Find("Player").GetComponent <PlayerController>().LetMeKnow("Listeners: " + listeners.Count);
 }