gpt4 book ai didi

c# - Wpf Prism 在导航后处理 ViewModel

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:29 24 4
gpt4 key购买 nike

我正在开发一个使用了 Prism Framework 的应用程序。我在 Bootstrap 中注册了 View 模型,如下所示:

ViewModelLocationProvider.Register<LoginControl, LoginViewModel>();
ViewModelLocationProvider.Register<MainWindow, MainWindowViewModel>();
ViewModelLocationProvider.Register<CountryList, CountryViewModel>();

我还为 Navigation 注册了 prism 为:

builder.RegisterTypeForNavigation<LoginControl>();
builder.RegisterTypeForNavigation<MainWindow>();
builder.RegisterTypeForNavigation<CountryList>();

它工作完美,但我发现在第一次导航到 ViewModel 时,每个 View 模型的构造函数都被调用一次。在提供相同的 View 模型对象之后。但我希望在导航之后,viewmodel 也应该处理并且每次都提供新对象。

我想实现一些类似于 autofac 的东西:

builder.RegisterType<ModuleLoader>().InstancePerDependency()

但是我没有在 ViewModelLocationProvider 中找到任何方法来实现这一点。有什么办法可以实现吗?

更新

发现当我从一个 View 导航到另一个 View 时,该 View 也没有被释放。我们移动到相同的 View (区域中的用户控件),然后提供相同的对象,这是 ViewModel 的相同实例的真正原因。有什么办法可以在 Prism 中处理导航后的 View 吗?

最佳答案

通过为我的用户控件实现 IRegionMemberLifetime 接口(interface)并添加以下属性解决了这个问题

public bool KeepAlive
{
get
{
return false;
}
}

关于c# - Wpf Prism 在导航后处理 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46963455/

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