簡體   English   中英

WPF中的數據綁定對過去的框架有何改進?

[英]In what way is Databinding in WPF an improvement over past frameworks?

與過去的數據綁定框架相比,WPF數據綁定框架的根本變化是什么?

從根本上強調該術語,即架構而不是技術。 當然,它帶來了改進,但是我對此類框架的可擴展性,可維護性和可伸縮性以及AGNOSTICISM(PORTABILITY)更加感興趣,也就是說,我處於PARADIM級別。

為什么我看不到與以前的數據綁定框架相比,真正抽象出WPF數據綁定本質的某些UML模式,以查看它確實只是技術還是對PARADIGM的真正改進。

來自Windows窗體世界,這些是我到目前為止發現的WPF數據綁定的優點:

  1. DataContext和binding Path是分別指定的 ,如果綁定本身未指定 ,則綁定會以分層方式(及其父級)查找其DataContext

    可以看到這樣的優點,例如使用ListViewDataTemplate 前者可以指定數據源( DataContext ),而后者可以定義如何顯示源項目的屬性(通過Path指定)。

    (順便說一句,這可能是一個問題:AFAIK,XAML中沒有辦法確保在編譯時DataContextPath引用相同類型的對象。)

  2. Path可能比僅屬性名稱更復雜 當綁定到XML(您可以指定一個XPath表達式來引用數據)而不是綁定POCO時,這可能是最有用的。

  3. WPF在Windows Forms數據綁定上似乎沒有一些煩人的問題:

    • 請參閱我的上一個問題, 在沒有InvokeRequired的多線程方案中,Winforms將數據綁定到業務對象? — IIRC,即使使用WPF,仍然需要一些工作來 從后台線程 (通過 Dispatcher )正確獲取 更新 ,但是據我所知,情況要比Winforms好。 我記得 Jason Dolinger在MVVM模式上的視頻中顯示了一個示例。

      編輯 :在這方面,事情其實沒有,因為所有的WinForms發生太大的變化。 BeginInvoke簡直被替換Dispatcher類,這使得事情表面上稍微更好,但從根本上它仍然是相同的機制。)

    • Winforms數據綁定:是否可以使用TypeConverter代替Format / Parse事件? —通過綁定完成值轉換比使用Winforms更容易,因為可以直接在XAML中指定值轉換器; 在Winforms中,只能通過在綁定本身上定義的Format / Parse事件進行值轉換。 您不能直接在Windows窗體設計器中指定值轉換器。 因此,您需要在后台代碼中設置綁定; 這意味着您需要按名稱引用UI控件; 這至少部分破壞了View和Presenter的分離(如果您嘗試使用MVP模式)。 不是很好。

  4. Winforms中不存在命令 您必須使用背后的代碼(例如, saveButton_Clicked )處理事件和事件處理程序,而不是命令。 現在,如果您想將所有邏輯委托給Presenter類(同樣,在MVP設置中),則必須手動將諸如單擊按鈕之類的事件從視圖轉發到Presenter。 在WPF中,數據綁定通過ICommand / RoutedCommand的可用性得到了補充,這使此過程變得更加容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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