OneWay binding stops working after the target manually updated

后端 未结 4 661
长情又很酷
长情又很酷 2021-01-12 05:10

I have such WPF binding code:

TestModel source = new TestModel();
TestModel target = new TestModel();

Bind(source, target, BindingMode.OneWay);

source.Attr         


        
4条回答
  •  抹茶落季
    2021-01-12 05:33

    If you set Binding Mode to OneWay, this means that the binding works only in one way: the target is updated when the source change.

    But the target must be a dependency property, and the code you have is a CLR .NET property. You should set the value on the the target using the registered dependency property name, not just an ordinary .NET property name. The Jared's answer is quite right, this might bring confusion in resolving conflict between WPF dependency property and ordinary .NET CLR property.

    If you follow the convention, the dependency property should be in the form of "propertyname"+property.

    Example: TextProperty is "Text" dependency property of TextBox. Calling these in code should be:

    TextBox1.TextProperty="value";
    

    For more information on setting the source of Binding:

    http://msdn.microsoft.com/en-us/library/ms743643.aspx

提交回复
热议问题