原先控件的依赖属性写法如下
public class MyControl : Control
{
public double MyWidth
{
get => (double)GetValue(MyWidthProperty);
set => SetValue(MyWidthProperty, value);
}
public static readonly DependencyProperty MyWidthProperty =
DependencyProperty.Register("MyWidth", typeof(double), typeof(Control),
new PropertyMetadata(0d));
}
把属性 MyWidth Binding 到 ViewModel 的一个变量之中,一开始发现没什么问题,但是后来在 MyControl 这个对 MyWidth 进行修改之后发现 Binding 就失效了,ViewModel 不再能对 MyControl 中的 MyWidth 进行修改。
百度后发现原因是
https://ask.csdn.net/questions/677894
因为你的OneWayToSource 破坏了 t1的绑定 wpf绑定里面一旦建立了绑定 如果绑定源被第三方改变 这个绑定就会被破坏掉 你可以试试把你的t3 Mode也改为OneWay 不要用OneWayToSource 因为 OneWayToSource 其实改变了绑定源 t1和t2的绑定就被破坏了
而 new PropertyMetadata(0d) 所注册的依赖属性默认的 BindingMo