簡體   English   中英

如何使用Binding with Dependency Property鏈接屬性

[英]How to chain properties using Binding with Dependency Property

假設使用Binding發生以下數據流:

PropertyA <--> DependencyProperty <--> PropertyB
  • < - >標記表示TwoWay綁定模式。
  • PropertyAPropertyB類在更改時實現INotifyPropertyChanged並在其setter訪問器中調用OnPropertyChanged方法。

綁定編譯器設置從上面的流程左側開始向右,這意味着最后一個綁定集在DependencyPropertyPropertyB之間。

問題是當PropertyA通知屬性發生變化時, DependencyProperty不會調用她的OnPropertyChangedCallback方法。

相反,當PropertyB通知屬性發生更改時, DependencyProperty調用她的OnPropertyChangedCallback方法。

我想知道是否有可能使用.NET Binding機制實現這種行為,或者還有另一種方法。

提前致謝。

UPDATE

例如,問題上下文中的術語“鏈”意味着:

PropertyA通知變更時, PropertyB將從DependencyProperty通知PropertyA變更通知,反之亦然。

上面的示例使用DependencyPropertyPropertyAPropertyB之間“鏈接”。

不能在作為目標的同一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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM