2

我開始在Silverlight中使用RIA服務和SilverlightFx編寫應用程序。 現在這個應用程序是一個非常大的控件之間有很多交互。Silverlight應用程序使用.net Ria服務和SilverlightFX

作爲估計它將有大約60-70個用戶控件。現在我的問題是......

  1. 選擇.Net Ria和SilverlightFx是不是很好? (我的觀點是......它很快就不會生產,而且它是一個很大的框架,一旦框架被正確理解,使用框架將有助於單元測試並節省開發時間。)

  2. 閱讀完博客我不清楚SilverlightFx如何處理用戶控件之間的交互。例如,我有一個用戶控件(稱爲「S」),它具有搜索功能...自動完成和所有...現在我有另一個用戶控件(說「R」),顯示搜索結果。顯示結果面板可以從搜索用戶控件或其他用戶控件(說F)中使用,它可以給出特定類別的所有項目。我無法搜索和選擇類別到一個單一的userontrol。那麼該怎麼做呢? 如果我創建不同的ViewModels,他們將如何相互交流?

  3. 在每個ViewModel中創建域服務上下文還是在整個應用程序中使用單個服務上下文更好?

回答

2

注到前言答案 - 我Silverlight.FX在作者和建築師RIA服務...等等因素偏見回覆:-) ...

我在兩個組合上做了兩篇博客文章,您可能會發現有幫助:herehere。這些包括使用DomainContext的基本視圖模型場景和使用Silverlight單元測試框架的視圖模型的基本單元測試。

Silverlight.FX提供的不僅僅是圖形交互。從網站(http://projects.nikhilk.net/SilverlightFX):

  • 應用模型 - SilverlightFX 有更豐富的應用程序對象 提供的服務模式,一個IoC 容器中,主題化的支持,視圖 模型(MV-VM),導航和MVC , 之間的各種其他功能。
  • 用戶界面組件 - SilverlightFX 提供形式和 視窗,主頁狀容器, 佈局控制和數據綁定 控制一個小集增強 控件,支持。
  • 聲明查看 - SilverlightFX提供了一個框架 寫作行爲,行動, 觸發,和命令,並且還 提供了一組外的開箱 實現。
  • 效果和 轉換 - SilverlightFX提供 程序動畫框架 能夠實現補間和 插值和緩動行爲。 此外,它提供了簡單的 廣泛應用的動畫,可以將 作爲效果應用,並且 以完全聲明的方式轉換到標準控件。

跨視圖模型處理通知的方法是使用某種事件聚合模式,它允許視圖模型以分離方式發佈和訂閱事件。

此功能尚未在Silverlight.FX中,但預計將很快推出。我最近在TechEd南非講座中展示了這種溝通方式 - 查看幻燈片和代碼以實現此目的:http://www.nikhilk.net/TechEd09-South-Africa-Samples.aspx

希望有所幫助。

+0

謝謝Nikhil。我會看一下。 – Tanmoy 2009-08-29 06:45:43

0

嘿,首先,我不知道如果SLFX提供了除了圖形交互的任何有用的功能,我建議你看一看prism對之間適當MVVM集成和設計中的正確使用地區,然後通信區(簡單地說,用戶控件,但有點在其加載更多動態)

  1. 單元測試從SL3接口 意味着你必須有一種手段, 模擬用戶輸入,也有相當 待辦事項這幾種方法。其中最容易的是MVVM方法和 ,從而模擬輸入到 視圖模型。對SL3 的棱鏡支持將與WPF 4.0的 版本的合作。棱鏡目前沒有 支持SL3只是沒有導航 框架,因爲它與 棱鏡的區域導航很多衝突,但他們 執行不同的任務,他們 不重疊功能。

  2. 如果有用戶控件「S」和「R」,然後,它們都將共享 公共數據源,作爲 視圖模型,因此,視圖模型內屬性 可以通信 與對方,這種情況主要發生在 當OnPropertyChanged事件是 發射。或者點擊一個按鈕,然後使用棱鏡命令 ,您可以將 連接到按鈕控制點擊方法 到viewmodel中的一個方法。

  3. 這真的取決於的東西,如併發了很多,因爲 全部來自SL3調用是異步, 這意味着你可以拍攝3在同一域 上下文查詢 一次,和多少個連接 你希望創建到您的WCF 服務。我還沒有使用RIA足以 明白你有 選擇的影響,所以我不能給你 一個確切的答案,但一般 規則是保持DB連接到 最低(域範圍內回收 不會自動轉換成自WCF 更少的連接是無狀態的 除非另有設計)

+0

您是否告訴同時爲「S」和「R」保留相同的ViewModel類,然後usercontrol「F」將如何與它通信?或者更改我的視圖模型以使「S」「R」和「F」共享相同的視圖模型更好。 – Tanmoy 2009-08-16 12:50:05

+0

如果您在單個視圖(頁面)上有4個控件,則所有四個控件共享相同的視圖模型,每個視圖都有自己的視圖模型,每個視圖由多個控件組成。棱鏡的做事方式是在一個視圖(頁面)內有區域,每個區域都有自己的視圖模型,然後有一個機制允許區域進行通信。如果S,R,F和緊密耦合在一個視圖上,那麼它們應該共享相同的視圖模型,當視圖顯式取決於它們緊密耦合時,解耦視圖模型沒有意義。 – Neil 2009-08-17 14:05:08

+0

ViewModel是特定於視圖的,Model是特定於ViewModel的,這也是向後工作的。 如果你想要在每個控件上使用不同的ViewModel,那麼我建議你去區域路由,這對你的問題更有意義,但是這就意味着你會交換單個控件的實現嗎? – Neil 2009-08-17 14:06:17

相關問題