// Token: 0x06001C2A RID: 7210 RVA: 0x0008438C File Offset: 0x0008258C internal override void ChangeSourcesForChild(BindingExpressionBase bindingExpression, WeakDependencySource[] newSources) { int num = this.MutableBindingExpressions.IndexOf(bindingExpression); if (num >= 0) { WeakDependencySource[] commonSources = null; if (base.UsesLanguage) { commonSources = new WeakDependencySource[] { new WeakDependencySource(base.TargetElement, FrameworkElement.LanguageProperty) }; } WeakDependencySource[] newSources2 = BindingExpressionBase.CombineSources(num, this.MutableBindingExpressions, this.MutableBindingExpressions.Count, newSources, commonSources); base.ChangeSources(newSources2); } }
// Token: 0x06001C23 RID: 7203 RVA: 0x00083FF4 File Offset: 0x000821F4 private void AttachToContext(bool lastChance) { DependencyObject targetElement = base.TargetElement; if (targetElement == null) { return; } bool flag = TraceData.IsExtendedTraceEnabled(this, TraceDataLevel.Attach); this._converter = this.ParentMultiBinding.Converter; if (this._converter == null && string.IsNullOrEmpty(base.EffectiveStringFormat)) { TraceData.Trace(TraceEventType.Error, TraceData.MultiBindingHasNoConverter, this.ParentMultiBinding); } if (flag) { TraceData.Trace(TraceEventType.Warning, TraceData.AttachToContext(new object[] { TraceData.Identify(this), lastChance ? " (last chance)" : string.Empty })); } base.TransferIsDeferred = true; bool flag2 = true; int count = this.MutableBindingExpressions.Count; for (int i = 0; i < count; i++) { if (this.MutableBindingExpressions[i].StatusInternal == BindingStatusInternal.Unattached) { flag2 = false; } } if (!flag2 && !lastChance) { if (flag) { TraceData.Trace(TraceEventType.Warning, TraceData.ChildNotAttached(new object[] { TraceData.Identify(this) })); } return; } if (base.UsesLanguage) { WeakDependencySource[] commonSources = new WeakDependencySource[] { new WeakDependencySource(base.TargetElement, FrameworkElement.LanguageProperty) }; WeakDependencySource[] newSources = BindingExpressionBase.CombineSources(-1, this.MutableBindingExpressions, this.MutableBindingExpressions.Count, null, commonSources); base.ChangeSources(newSources); } bool flag3 = base.IsOneWayToSource; object newValue; if (base.ShouldUpdateWithCurrentValue(targetElement, out newValue)) { flag3 = true; base.ChangeValue(newValue, false); base.NeedsUpdate = true; } base.SetStatus(BindingStatusInternal.Active); if (!flag3) { this.UpdateTarget(false); return; } base.UpdateValue(); }