2011-04-26 38 views
0

我正在開發一個Prism應用程序,我需要在應用程序加載後在後臺模型中加載一些數據。我有一個隱藏的單獨視圖,可以通過視圖模型顯示這些數據。我不想增加應用程序加載時間,也不想增加視圖加載時間。我能想到的唯一解決方案是引發一個Shell Loaded事件,並讓視圖模型或模型訂閱它。在後臺加載模型數據

這是一個好方法還是有更好的方法?

此外,我不確定是否應該在BootstrapperRunShell ViewModel中提高Shell Loaded事件。我如何鏈接路由命令(例如:加載)到一個ICommand

回答

1

我儘量避免在引導程序中處理這些事件。因此,將shell視圖的Loaded事件附加到shell視圖模型是一個好方法。在引導程序中實際引發此事件的唯一原因是如果您需要StartupEventArgs(我有時會這樣做)。

處理加載事件的方法有很多。

  • 100%MVVM使用將事件直接傳遞給ICommand或方法的附加屬性。例如:how to call a window's Loaded event in WPF MVVM?
  • 只需在後面的代碼中處理Loaded事件,並從那裏調用VM中的Loaded方法/命令。這是一個簡單易行的解決方案。
0

爲了減少加載時間,您應該儘量避免在UI線程上做太多工作。您可能想要調查TPL或稱爲ReactiveUI的一個很好的框架,它提供了一個非常方便的機制來異步加載事物。