public void TriggerPropertyChanged() { if (PropertyChangedEvent == null) { return; } LastPropGetter.TriggerPropertyChanged(); }
public CompositePathGetter ( IEnumerable <IBindingPathLink <object> > pathLinks, PropertyType defaultValue ) { _pathLinks = pathLinks; _defaultValue = defaultValue; if (pathLinks.IsNullOrEmpty()) { PropGetters.Add(new SimplePropGetter <object>()); return; } IObjWithPropGetter <object> previousPropGetter = null; foreach (var pathLink in _pathLinks) { IObjWithPropGetter <object> propGetter = pathLink.CreateGetter(); PropGetters.Add(propGetter); if (previousPropGetter != null) { IObjWithPropGetter <object> thePreviousPropGetter = previousPropGetter; previousPropGetter.PropertyChangedEvent += () => { propGetter.TheObj = thePreviousPropGetter.GetPropValue(); }; } previousPropGetter = propGetter; } previousPropGetter.PropertyChangedEvent += () => { if (this.PropertyChangedEvent == null) { return; } if (!LastPropGetter.HasObj) { _cachedValue.TheValue = _defaultValue; } else { _cachedValue.TheValue = (PropertyType)LastPropGetter.GetPropValue(); } PropertyChangedEvent?.Invoke(); }; }
void SetValueFromLastPropGetterValue() { if (!LastPropGetter.HasObj) { _cachedValue.TheValue = _defaultValue; } else { _cachedValue.TheValue = (PropertyType)LastPropGetter.GetPropValue(); } }