使用INavigationService而不放弃ViewModels?
问题描述:
即时通讯使用的INavigationService
,所以我可以在两个视图模型这样间导航:使用INavigationService而不放弃ViewModels?
MasterViewModel:
public virtual INavigationService NavigationService { get; }
//Command Navigate to SubUserControlView:
NavigationService.Navigate("SubUserControlView", parentViewModel: this);
SubViewModel:
public virtual INavigationService NavigationService { get; }
//Command Navigate back to MainUserControlView:
NavigationService.GoBack(parameter);
当我回到我的MasterViewModel
我所有的更改将被丢弃。我该如何避免这种情况?我想使用SubUserControlView
从列表中选择一个值并将其返回到MasterViewModel
。
答
尝试主页面KeepAlive
属性设置为true
:
<Page x:Class="WpfApplication3.MasterPage"
.... KeepAlive="True">
这可以防止Page
的新实例从得到创建在每次航行时间:https://msdn.microsoft.com/en-us/library/system.windows.controls.page.keepalive(v=vs.110).aspx。
这也会导致您的视图模型不会被重新创建,假设您在页面的构造函数中创建了这些模型。
我假设UserControls没有这个属性? –
No. Just Pages。 – mm8