public override void Dispose() { _formatExpression = null; _getSourceMemberValue = null; for (int index = 0; index < _sources.Length; index++) _sources[index].Dispose(); base.Dispose(); }
public void SetValue(BindingActionValue currentValue, object newValue) { //it's normal here. lock (this) { if (_currentValue != null && Equals(currentValue.Member, _currentValue.Member) && Equals(_currentValue.MemberSource.Target, currentValue.MemberSource.Target)) SetValue(newValue); else { UnsubscribeEventHandler(); currentValue.TrySetValue(new object[] { this }, out _subscriber); if (_subscriber != null) { _currentValue = currentValue; SetValue(newValue); } } } }
private void TryRegisterEvent(BindingActionValue bindingActionValue, object newValue, IDataContext context) { if (newValue == null && _closure == null) return; if (_closure == null) Interlocked.CompareExchange(ref _closure, new EventClosure(ServiceProvider.WeakReferenceFactory(this)), null); _closure.LastContext = context; _closure.SetValue(bindingActionValue, newValue); }
protected override object GetValueInternal(IBindingMemberInfo targetMember, IDataContext context, bool throwOnError) { if (BindingMemberType.Event.EqualsWithoutNullCheck(targetMember.MemberType)) { if (_getSourceMemberValue == null) _getSourceMemberValue = new BindingActionValue(this, BindingMemberInfo.MultiBindingSourceAccessorMember); return _getSourceMemberValue; } return base.GetValueInternal(targetMember, context, throwOnError); }
private void TryRegisterEvent(BindingActionValue bindingActionValue, object newValue, IDataContext context) { if (newValue == null && _closure == null) return; if (_closure == null) Interlocked.CompareExchange(ref _closure, new EventClosure(_bindingSource, _toggleEnabledState && IsTarget, Parameters == null ? null : Parameters.CommandParameterDelegate), null); _closure.LastContext = context; _closure.SetValue(bindingActionValue, newValue); }