我使用MvvmCross 3.5.1開發Win 8.1應用程序。用戶按順序瀏覽一些視圖並返回到最後一個視圖的第一個視圖。在工作流的第一次迭代期間,一切都很完美。但是當用戶再次啓動工作流時 - 不會調用viewmodels中的Init()方法。當我第二次導航到ViewModel時,爲什麼不調用Init()方法?
例如,FirstViewModel和SecondViewModel之間的交互如下所示。
FirstViewModel:
ShowViewModel<SecondViewModel>(
new
{
code = ItemCode,
descr = ItemDescription
});
SecondViewModel:
public void Init(string code, string descr)
{
...
}
那麼簡單,但只能一次性:(
什麼原因,可能需要這樣的行爲
由於w^orkaround我試圖加載視圖模型「手動」:
var d = new Dictionary<string, string>
{
{"code", ItemCode},
{"descr", ItemDescription}
};
var b = new MvxBundle(d);
var r = new MvxViewModelRequest<SecondViewModel>(b, null, null);
var m = Mvx.Resolve<IMvxViewModelLoader>().LoadViewModel(r, null);
它與初始化解決了這個問題()方法調用。但我不知道如何使用變量顯示視圖模型。有誰知道?
道歉爲我可憐的英語,並提前致謝!
我不知道mvvmcross,但我認爲你正在尋找「裝載」方法或「裝載「事件。 – Kilazur
可能除非你明確地銷燬它已經初始化的視圖,並且在返回時從內存拉回來,而不是重新初始化。 –
這篇文章可能會讓你感興趣:http://stackoverflow.com/questions/17857543/mvvmcross-viewmodel-caching-and-re-initializing – momar