2011-01-31 65 views
0

現在,我正在開發我的第一個WP7應用程序,並且遇到了一些問題,儘管我在網上可以找到我可以找到的內容,但仍然無法回答。請考慮一個具有主頁面,參數頁面和結果頁面的應用程序。在參數頁面中,用戶可以在各種文本框中輸入或更新數字。點擊後退按鈕將用戶帶回主頁面,在那裏有一個名爲「計算」的按鈕。點擊該按鈕應該獲取數據,使用該數據進行計算,並將用戶帶到結果頁面,其中顯示結果的網格。MVVM Light:我從哪裏實例化模型中的類,以及如何更新/訪問它?

在一個名爲Calculator.cs的文件中,我在名爲Models的文件夾中有一個名爲Calculator的類。我還在ViewModels文件夾中的MainViewModel.cs,ParametersViewModel.cs和ResultsViewModel.cs文件以及相應的MainPage.xaml,以及名爲Views的文件夾內的Parameters.xaml和Results.xaml。我假設所有的數據都將在Calculator類的實例中被處理,然後結果集將被返回並導向到Results.xaml。我對於在哪裏實例化Calculator類,傳遞數據,然後檢索結果感到茫然。我也有些困惑,當計算完成後,我將如何觸發自動導航到結果頁面。

任何幫助,這將不勝感激。

更新:Passing a complex object to a page while navigating in a WP7 Silverlight application有一些關於同一主題的更多信息。我可以進入App.xaml.cs並添加這樣的:

public class Foobar 
{ 
    public string barfoo = "hah!"; 
} 

public static Foobar myfoob = new Foobar(); 

然後從視圖模型頁面,例如訪問AboutViewModel.cs,像這樣:

public AboutViewModel() 
{ 
    string goo = App.myfoob.barfoo; 
} 

但是在這一點上,我仍然不確定什麼未預見的效果可能有。在這一點上,我將解決序列化/邏輯錯誤,看看這種方法會發生什麼,或者通過跨頁面使用相同的DataContext。否則,上面鏈接中的一個海報提到序列化參數並在頁面之間傳遞它們。我關心的是HTTP GET是否有字符限制。似乎有:URI Limits in Silverlight

回答

1

當然有很多可能的設計 - 其中很多是正確的不同的方式!

這裏有一個我可以使用:

  • 計算按鈕按應觸發導航到結果頁
  • 繼續瀏覽,檢索結果頁面應該顯示一些動畫(也許只是一個進度條)
  • 繼續瀏覽,結果頁面應該創建一個新ResultsViewModel,傳遞MainViewModel作爲參數
  • 的ResultsViewModel的構造(或init方法)應該引發了一個線程來執行計算
  • 在這個計算是完整的,那麼ResultsViewModel的相關屬性將設置
  • 此時結果頁面上的數據綁定將清除動畫並顯示結果

其他的解決方案是絕對可用 - 將有興趣閱讀其他人的建議和偏好。

另外,在結果頁面上要注意的一點是墓碑 - 可能是一個有趣的挑戰!

+0

感謝您對此的看法。這給了我一些繼續。通過「傳入MainViewModel作爲參數」是否意味着將它們包含在URL中?或者有什麼方法可以傳遞對象本身? – Stonetip 2011-01-31 21:06:05

相關問題