DependencyProperty
имеет свойство наследования, поэтому, если вы не установите DataContext UserControlDP, DataContext наследуется от DataContext MainWindow.В этом случае DataContext UserControlDP в приведенном ниже коде устанавливается как MainWindow_ViewModel
.Таким образом, привязка выполняется правильно.
<usercontrol:UserControlDP Width="200" Height="100"
TestValue="{Binding TestValueApp, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True}"
Margin="152,54,151,157"></usercontrol:UserControlDP>
В другом случае DataContext UserControlDP устанавливается как UserControlDP_ViewModel, поэтому привязка нарушается.Вы можете увидеть первое сообщение об исключении как следующее в окне отладки.
System.Windows.Data Error: 40 : BindingExpression path error: 'TestValueApp' property not found on 'object' ''UserControlDP_ViewModel' (HashCode=24672987)'. BindingExpression:Path=TestValueApp; DataItem='UserControlDP_ViewModel' (HashCode=24672987); target element is 'UserControlDP' (Name=''); target property is 'TestValue' (type 'Object')