2016-07-15 81 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

相關問題