使用 MVVM 的棱镜导航 GoBack()
Prism navigation GoBack() using MVVM
我在创建返回按钮时遇到问题(按预期工作:))。
我正在使用 MVVM,并且我有一个名为 ContentRegion
的区域。我的 MainWindow
显示返回按钮和区域,仅此而已。假设我只有 ViewA
和 ViewB
。我从 ViewA
到 ViewB
的基本导航工作正常。在 MainWindow
中,我在启动时将区域设置为 ViewA
并且我有 DelegateCommand
用于返回按钮以及 GoBack()
和 CanGoBack()
方法:
public MainWindowViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
_regionManager.RegisterViewWithRegion("ContentRegion", typeof(AddCorpActView));
NavigateCommand = new DelegateCommand(GoBack, CanGoBack);
}
private void GoBack()
{
_regionManager.Regions["ContentRegion"].NavigationService.Journal.GoBack();
}
private bool CanGoBack()
{
return true;
}
在ViewModelA
和ViewModelB
中我添加了属性:
private IRegionNavigationService _navigationService;
和
public void OnNavigatedTo(NavigationContext navigationContext)
{
_navigationService = navigationContext.NavigationService;
}
当我使用返回按钮从 ViewB
转到 ViewA
时,我没有收到任何错误,但也没有任何反应。
如有任何意见,我们将不胜感激。
问题出在这一行,您在其中使用 view discovery 分配初始视图。
_regionManager.RegisterViewWithRegion("ContentRegion", typeof(AddCorpActView))
视图发现和视图注入不能与日志结合使用,see documentation。
The navigation journal can only be used for region-based navigation operations that are coordinated by the region navigation service. If you use view discovery or view injection to implement navigation within a region, the navigation journal will not be updated during navigation and cannot be used to navigate forward or backward within that region.
改为仅使用导航服务。将通过视图发现设置初始视图替换为调用导航服务,例如:
_regionManager.RequestNavigate("ContentRegion", ...)
您还可以将导航服务的初始视图设置移动到您的模块定义中。
我在创建返回按钮时遇到问题(按预期工作:))。
我正在使用 MVVM,并且我有一个名为 ContentRegion
的区域。我的 MainWindow
显示返回按钮和区域,仅此而已。假设我只有 ViewA
和 ViewB
。我从 ViewA
到 ViewB
的基本导航工作正常。在 MainWindow
中,我在启动时将区域设置为 ViewA
并且我有 DelegateCommand
用于返回按钮以及 GoBack()
和 CanGoBack()
方法:
public MainWindowViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
_regionManager.RegisterViewWithRegion("ContentRegion", typeof(AddCorpActView));
NavigateCommand = new DelegateCommand(GoBack, CanGoBack);
}
private void GoBack()
{
_regionManager.Regions["ContentRegion"].NavigationService.Journal.GoBack();
}
private bool CanGoBack()
{
return true;
}
在ViewModelA
和ViewModelB
中我添加了属性:
private IRegionNavigationService _navigationService;
和
public void OnNavigatedTo(NavigationContext navigationContext)
{
_navigationService = navigationContext.NavigationService;
}
当我使用返回按钮从 ViewB
转到 ViewA
时,我没有收到任何错误,但也没有任何反应。
如有任何意见,我们将不胜感激。
问题出在这一行,您在其中使用 view discovery 分配初始视图。
_regionManager.RegisterViewWithRegion("ContentRegion", typeof(AddCorpActView))
视图发现和视图注入不能与日志结合使用,see documentation。
The navigation journal can only be used for region-based navigation operations that are coordinated by the region navigation service. If you use view discovery or view injection to implement navigation within a region, the navigation journal will not be updated during navigation and cannot be used to navigate forward or backward within that region.
改为仅使用导航服务。将通过视图发现设置初始视图替换为调用导航服务,例如:
_regionManager.RequestNavigate("ContentRegion", ...)
您还可以将导航服务的初始视图设置移动到您的模块定义中。