C# WPF绑定双向不工作,单向源工作。为什么?

C# WPF绑定双向不工作,单向源工作。为什么?,c#,wpf,mvvm,binding,two-way,C#,Wpf,Mvvm,Binding,Two Way,我有一个控件,其DependencyProperty类型为TimeSpan。当我尝试绑定到该属性时,该值不会被更新 控件的使用: <controls:TimeControl Time={Binding SomeTimeSpanProperty} /> 当我更改控件中的时间值时,该更改不会在SomeTimeSpan属性中更新。但是,如果我将{Binding SomeTimeSpanProperty}更改为{Binding SomeTimeSpanProperty,Mode=One

我有一个控件,其DependencyProperty类型为TimeSpan。当我尝试绑定到该属性时,该值不会被更新

控件的使用:

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


当我更改控件中的时间值时,该更改不会在SomeTimeSpan属性中更新。但是,如果我将{Binding SomeTimeSpanProperty}更改为{Binding SomeTimeSpanProperty,Mode=OneWayToSource},它将被更新。

我找到了解决方案。如果将来有人想知道这是什么:

我必须显式地将绑定模式设置为双向,因为TimeSpan类型属性的默认绑定模式是单向的

由此:

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

为此:

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


现在它开始工作了

在WPF中,
Binding.Mode
属性的默认值为。这听起来很有趣,但这意味着绑定“使用绑定目标的默认模式值。每个依赖项属性的默认值都不同。通常,用户可编辑控件属性(如文本框和复选框的属性)默认为双向绑定,而大多数其他属性默认为单向绑定。”谢谢,我忘了。为什么有这么多的便服?这个问题到底出了什么问题?