WPF помещает Binding в качестве значений свойств зависимостей. При настройке привязки вы фактически заменяете текущее значение свойства новым. В конце DependencyObject.SetValueCommon вы можете найти код, который это сделал. Там мы видим, что WPF получает значение по умолчанию, затем устанавливает его как текущее значение свойства с маркером выражения, а затем присоединяет BindingExpression, который обновляет источник, используя текущее значение свойства - значение по умолчанию.
this.SetEffectiveValue(entryIndex, dp, dp.GlobalIndex, metadata, expression, BaseValueSourceInternal.Local);
object defaultValue = metadata.GetDefaultValue(this, dp);
entryIndex = this.CheckEntryIndex(entryIndex, dp.GlobalIndex);
this.SetExpressionValue(entryIndex, defaultValue, expression);
DependencyObject.UpdateSourceDependentLists(this, dp, array, expression, true);
expression.MarkAttached();
expression.OnAttach(this, dp);
entryIndex = this.CheckEntryIndex(entryIndex, dp.GlobalIndex);
effectiveValueEntry = this.EvaluateExpression(entryIndex, dp, expression, metadata, valueEntry, this._effectiveValues[entryIndex.Index)]);
entryIndex = this.CheckEntryIndex(entryIndex, dp.GlobalIndex);