internal void ListenPropertyChange(BindableProperty bindableProperty, PropertyChangedEventHandler eventHandler) { PropertyChangedListener propertyChangedListener; BindablePropertyChangedEventDict.TryGetValue(bindableProperty.PropertyName, out propertyChangedListener); if (null == propertyChangedListener) { propertyChangedListener = new PropertyChangedListener(); BindablePropertyChangedEventDict.Add(bindableProperty.PropertyName, propertyChangedListener); } propertyChangedListener.RegisterListnerHandler(eventHandler); }
internal void RemovePropertyChangeListener(BindableProperty bindableProperty, PropertyChangedEventHandler propertyChangedEventHandler) { PropertyChangedListener propertyChangedListener; BindablePropertyChangedEventDict.TryGetValue(bindableProperty.PropertyName, out propertyChangedListener); if (null != propertyChangedListener) { propertyChangedListener.UnRegisterListnerHandler(propertyChangedEventHandler); if (0 == propertyChangedListener.ListenerCount) { BindablePropertyChangedEventDict.Remove(bindableProperty.PropertyName); } } }