我正在尝试在我的 WPF 应用程序中实现接口 IConfirmNavigationRequest,但不能让 Prism 调用它的函数。
在我的应用中有两个区域,Region_1 和 Region_3。
在 Region_1 中有一个 FirstView,其中有一个按钮连接到 FirstViewModel 中的命令,它执行实际导航:
IRegionManager irmRegionManager = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<Microsoft.Practices.Prism.Regions.IRegionManager>();
IRegion irRegion3 = irmRegionManager.Regions["Region_3"];
var viewToActivate = irRegion3.GetView(this.NavigatedView);
irRegion3.Activate(viewToActivate);
Region_3 中两个视图之间的导航交换,效果很好。
FirstViewModel 实现了接口IConfirmNavigationRequest,但是它的函数并不沿着导航调用,只是简单的执行。
public class FirstViewModel :
NotificationObject,
IConfirmNavigationRequest
{
public void OnNavigatedTo(NavigationContext navigationContext)
{
}
...
然后我还为 ThirdView 和 FourthView 实现了接口 IConfirmNavigationRequest,它们是在 Region_3 中发生导航的视图,但无济于事。
尽管如此,我为 ThirdView 和 FourthView 实现了接口 IRegionMemberLifetime,并且它的 KeepAlive 函数按预期调用。
public partial class ThirdView :
UserControl,
IConfirmNavigationRequest,
IRegionMemberLifetime
{
public ThirdView()
{
InitializeComponent();
}
public bool KeepAlive
{
get { return true; }
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
}
...
谁能解释如何强制 Prism 调用这些函数?
谢谢!