internal override object RawValue() { object rawValue = PW.RawValue(); SetStatus(PW.Status); return(rawValue); }
void ReplaceDependencySources() { if (!ParentBindingExpression.IsDetaching) { int size = PW.Length; if (PW.NeedsDirectNotification) { ++size; } WeakDependencySource[] newSources = new WeakDependencySource[size]; int n = 0; if (IsDynamic) { for (int k = 0; k < PW.Length; ++k) { DependencyProperty dp = PW.GetAccessor(k) as DependencyProperty; if (dp != null) { DependencyObject d = PW.GetItem(k) as DependencyObject; if (d != null) { newSources[n++] = new WeakDependencySource(d, dp); } } } if (PW.NeedsDirectNotification) { // subproperty notifications can only arise from Freezables // (as of today - 11/14/08), so we only need to propagate // them when the raw value is a Freezable. DependencyObject d = PW.RawValue() as Freezable; if (d != null) { newSources[n++] = new WeakDependencySource(d, DependencyObject.DirectDependencyProperty); } } } ParentBindingExpression.ChangeWorkerSources(newSources, n); } }