无法在OnNavigatedTo方法中引发InteractionRequest?

时间:2017-05-20 13:09:14

标签: c# wpf prism mef

当模块加载时,我正在导航到视图:

public void OnImportsSatisfied()
{
    this.ModuleManager.LoadModuleCompleted +=
            (s, e) =>
            {   
                if (e.ModuleInfo.ModuleName == EmailModuleName)
                {
                    this.RegionManager.RequestNavigate(
                        RegionNames.MainContentRegion,
                        InboxViewUri);
                }
            };
    }

当我导航到这个视图时,我想提出一个NotificationRequest(和他的PopupWindow);此方法在ViewModel中定义:

void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
    MyInteractionRequest.Raise(...);
}

通过调试,我发现在我第一次导航到视图时,InteractionRequest没有其Raised事件的订阅者,这就是为什么没有显示交互窗口的原因。为了使InteractionRequest工作,我需要导航到另一个视图,然后返回。 为什么会这样?在viewmodel之后是否创建了太晚的视图,因此无法将InteractionTrigger订阅到交互请求?

1 个答案:

答案 0 :(得分:1)

我的猜测是,在您提出请求时,视图尚未初始化。这意味着没有创建任何绑定,也没有添加任何处理程序。你总的来说是不好的做法。如果您必须在首次显示页面时显示弹出窗口,请为视图的已加载事件添加一个事件到命令行为,并在那里显示您的弹出窗口。这可确保页面已完全加载并且已完成所有绑定。