2011-01-14 75 views
2

我有一個silverlight bing地圖應用程序。我正在使用PRISM的MVVM模式。 bing映射具有XAML中不可用的「BoundingRectangle」屬性,但它可通過後面的代碼使用。當然,這樣做對我來說並不好,因爲我需要viewmodel中的數據,這些數據無法訪問View的代碼(我也不想添加它,因爲我真的想試圖不使用視圖的代碼如果可能的話)。從MVVM中的視圖獲取數據?

通常情況下,你會做一個雙向綁定到viewmodel屬性。 Bing地圖將顯示BoundingRectangle的圖層,但不顯示底圖(我可以找到)。

我不想在這裏找到黑客,只是想知道從視圖中獲取數據的最佳做法或慣例是不是「可綁定」的視圖模型。

謝謝!

回答

3

數據綁定在Silverlight只是一個框架功能,如果你遵循了MVVM您的看法和您的視圖模型之間的自動同步數據(模式)。但是,自己做這件事沒有任何問題!

MVVM模式的(比大多數UI模式提供的關注通常的分離其他)的兩個主要優點是:

  1. 它有助於單元測試,視圖模型可以從你的單元測試代碼行使沒有看法存在。
  2. 它可以幫助開發人員/設計師工作流程,減少設計師和開發人員之間共享的文件。

根據我的經驗,擁有少量的代碼隱藏「輔助」綁定框架並不難!

您可以使用諸如附加行爲之類的技術來包裝此代碼,但通常這隻會導致整體改進。

+0

所以,你建議做類似的事情:使用類似事件聚合器和後面的代碼將數據共享到需要的地方? – CraigF 2011-01-14 14:05:28

1

CraigF, 如果您使用Galasoft Light工具包,則可以使用中介模式,然後使用Messenger將視圖發送到您的視圖模型。視圖模型註冊到該消息,如果recive一個設置在視圖模型的財產,並做一些邏輯..