2013-04-12 18 views
0

因此,我有幾個頁面上有幾個用戶控件。其中一個UC出現在每個頁面上,並且正在從其構造函數中的DataService(用作信息存儲)中獲取信息。帶有多個用戶控件(和ViewModels)的頁面

在頁面之間切換時,UC的ViewModel構造函數未被調用,因此它不更新DataService中的信息。它被稱爲一次,在第一頁的創建過程中。

任何想法?我應該做一個方法,並從代碼隱藏中調用它?或者我可以以某種方式將viewmodel的字段綁定到DataService?

+0

被稱爲當你第一次瀏覽到第二頁的構造?應該是,因爲當時正在創建UC,但是當您回到第一頁時,頁面會被緩存,所以構造函數不會被調用。每次導航到頁面時都會引發OnNavigateTo,即使它已被緩存。 –

+0

@igrali修改了一下問題。我的意思是,UC的ViewModel只被調用一次。我應該從每個頁面的OnNavigateTo()調用UC.Refresh()嗎? –

+0

被調用一次的ViewModel構造函數取決於您創建虛擬機的位置。如果您在UC構造函數或XAML中創建它,它將被創建一次而不是緩存,因此當您返回到舊頁面時,它不會被重新創建。如果你想每次刷新視圖,你應該考慮從OnNavigatedTo調用某種刷新方法。只要刷新不會被調用兩次 - 無論是在構造函數和OnNavigatedTo –

回答

0

好的,答案很簡單。只需要在解決SimpleIoc時傳遞新參數。

SimpleIoc.Default.GetInstance<MainViewModel>((uidHolder++).ToString()); 

參考(約MVVM光的IoC的一些信息):how to use MVVMLight SimpleIoc?

相關問題