[英]How to chain properties using Binding with Dependency Property
假設使用Binding發生以下數據流:
PropertyA <--> DependencyProperty <--> PropertyB
TwoWay
綁定模式。 PropertyA
和PropertyB
類在更改時實現INotifyPropertyChanged
並在其setter訪問器中調用OnPropertyChanged
方法。 綁定編譯器設置從上面的流程左側開始向右,這意味着最后一個綁定集在DependencyProperty
和PropertyB
之間。
問題是當PropertyA
通知屬性發生變化時, DependencyProperty
不會調用她的OnPropertyChangedCallback
方法。
相反,當PropertyB
通知屬性發生更改時, DependencyProperty
調用她的OnPropertyChangedCallback
方法。
我想知道是否有可能使用.NET Binding機制實現這種行為,或者還有另一種方法。
提前致謝。
UPDATE
例如,問題上下文中的術語“鏈”意味着:
當PropertyA
通知變更時, PropertyB
將從DependencyProperty
通知PropertyA
變更通知,反之亦然。
上面的示例使用DependencyProperty
在PropertyA
和PropertyB
之間“鏈接”。
您不能在作為目標的同一DependencyProperty
上有兩個綁定 。
這意味着你有兩個相同的DependencyProperty
源。
但是您可以擁有一個屬性 (在Model或ViewModel上)作為許多依賴項屬性的源 。 這很常見。
如果只有在更改一個屬性時才調用OnPropertyChangedCallback
這對我來說似乎很正常。
只能有一個源,最后一個綁定獲勝。
這是一個帶有模式的漂亮頁面: http : //blog.scottlogic.com/2012/04/05/everything-you-wanted-to-know-about-databinding-in-wpf-silverlight-and-wp7-part-one html的
編輯
如果要同時擁有兩個對象的兩個屬性,可以使用ViewModel作為A持有PropB和持有PropB的B之間的中介。
所以你有:| < - > ClassA.PropA View <---> ViewModel.Prop- | | < - > ClassB.PropB
這意味着: - ViewModel Object將注冊到ClassA和ClassB的PropertyEventChanged。
如果ClassA或ClassB將為PropA或PropB更改引發事件,ViewModel將引發事件。
當調用ViewModel Prop.set時,ViewModel將調用ClassA.PropA.set和ClassB.PropB.set。
獲取ViewModel時,只會讀取ClassA.PropA。 但這並不重要,因為PropA和PropB值得一試。
希望它有所幫助,問候
問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.