2016-07-15 80 views
-2

我有一个TimeSpan类型的DependencyProperty控件。当我尝试绑定到该属性时,该值不会被更新。WPF Binding TwoWay不工作,OneWayToSource正在工作。为什么?

使用的控制:

<controls:TimeControl Time={Binding SomeTimeSpanProperty} /> 

当我更改了控制时间的价值,改变不更新在SomeTimeSpanProperty。但是,如果我将{Binding SomeTimeSpanProperty}更改为{Binding SomeTimeSpanProperty,Mode = OneWayToSource},它将被更新。

+0

为什么这么多downwotes?这个问题究竟是/错? – GregaMohorko

回答

0

我找到了解决方案。如果有人在将来阅读此内容时想知道它是什么:

因为TimeSpan类型属性的默认绑定模式是OneWay,所以我必须明确地将绑定的模式设置为TwoWay。

从这个:

<controls:TimeControl Time={Binding SomeTimeSpanProperty} /> 

这样:

<controls:TimeControl Time={Binding SomeTimeSpanProperty,Mode=TwoWay} /> 

而现在工作

+2

在WPF中,'Binding.Mode'属性的默认值是['BindingMode.Default'](https://msdn.microsoft.com/en-us/library/system.windows.data.bindingmode(v = vs.110)的.aspx)。这听起来很有趣,但这意味着绑定“*”使用绑定目标的默认“模式”值。每个依赖项属性的默认值都不同。通常,用户可编辑的控件属性(例如文本框和复选框) ,默认为双向绑定,而大多数其他属性默认为单向绑定。*“ – Clemens

+0

谢谢,我忘了这一点。 – GregaMohorko

相关问题