gpt4 book ai didi

c# - 如何在 UWP 中重新实例化页面/ View 模型?

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:27 25 4
gpt4 key购买 nike

我使用 MvvmCross构建我的 UWP 应用程序。我有自己的 View 模型的 View 。 当我启动应用程序时,第一次使用 ShowViewModel<PasscodeViewModel>() 从“设置” View 导航到“密码” View .然后它调用 View 模型和 View 构造函数来构建和初始化 View 。当用户返回设置 View 并使用与 ShowViewModel<PasscodeViewModel>() 相同的方法再次导航至密码 View 时那么这次 View 和 View 模型构造函数不会被调用。由于无法重新初始化密码 View 。因此它显示密码 View 的先前实例。

我试过以下解决方案

我尝试删除导航中的后台堆栈,但也没有调用构造函数。

也实现加载事件,但这个解决方案也不适合我。

同时实现了Void Init()在 View 模型中,但此方法也未被调用。

我只想在导航到 PasscodeView 时调用 PasscodeView 和 PasscodeViewModel 的构造函数。

所以我的问题是每次导航时如何强制重新初始化页面和 View 模型?请帮助解决这个问题。

最佳答案

我需要在需要时使用导航缓存模式。

我用不太干净的解决方案再次调用 init 解决了这个问题。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (this.ViewModel!= null && e.NavigationMode != NavigationMode.Back)
{
var reqData = (string)e.Parameter;
var converter = Mvx.Resolve<IMvxNavigationSerializer>();
var req = converter.Serializer.DeserializeObject<MvxViewModelRequest>(reqData);
this.Vm.CallBundleMethods("Init", new MvxBundle(req.ParameterValues));
}

base.OnNavigatedTo(e);
}

此代码避免在返回导航时再次调用 init。

关于c# - 如何在 UWP 中重新实例化页面/ View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37396506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com