【发布时间】:2016-06-10 10:52:16
【问题描述】:
我使用 MvvmCross 3.5.1 开发 Win 8.1 应用程序。用户依次浏览一些视图并从最后一个视图返回到第一个视图。在工作流程的第一次迭代期间一切正常。但是当用户再次启动工作流时 - 视图模型中的 Init() 方法不会被调用。
例如,FirstViewModel 和 SecondViewModel 之间的交互如下所示。
FirstViewModel:
ShowViewModel<SecondViewModel>(
new
{
code = ItemCode,
descr = ItemDescription
});
第二视图模型:
public void Init(string code, string descr)
{
...
}
如此简单,但只能使用一次 :(
什么原因可能导致这种行为?
作为解决方法,我尝试“手动”加载视图模型:
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);
它解决了调用 Init() 方法的问题。但我不知道如何使用 m 变量显示视图模型。有谁知道吗?
为我糟糕的英语道歉并提前感谢!
【问题讨论】:
-
我不了解 mvvmcross,但我认为您正在搜索“Load”方法或“Loaded”事件。
-
可能除非你明确地销毁它已经初始化的视图,并在返回时从内存中拉回,而不是重新初始化。
-
您可能会对这篇文章感兴趣:stackoverflow.com/questions/17857543/…
标签: c# windows-8.1 mvvmcross