0

我正在尝试在我的 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 调用这些函数?

谢谢!

4

0 回答 0