Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在OnNavigatedTo方法中引发InteractionRequest?_C#_Wpf_Prism_Mef - Fatal编程技术网

C# 无法在OnNavigatedTo方法中引发InteractionRequest?

C# 无法在OnNavigatedTo方法中引发InteractionRequest?,c#,wpf,prism,mef,C#,Wpf,Prism,Mef,加载某个视图的模块时,我正在导航到该视图: public void OnImportsSatisfied() { this.ModuleManager.LoadModuleCompleted += (s, e) => { if (e.ModuleInfo.ModuleName == EmailModuleName) { thi

加载某个视图的模块时,我正在导航到该视图:

public void OnImportsSatisfied()
{
    this.ModuleManager.LoadModuleCompleted +=
            (s, e) =>
            {   
                if (e.ModuleInfo.ModuleName == EmailModuleName)
                {
                    this.RegionManager.RequestNavigate(
                        RegionNames.MainContentRegion,
                        InboxViewUri);
                }
            };
    }
当我导航到这个视图时,我想提出一个通知请求和他的弹出窗口;此方法在ViewModel中定义:

void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
    MyInteractionRequest.Raise(...);
}
通过调试,我发现InteractionRequest在我第一次导航到视图时没有订阅它引发的事件,这就是为什么没有显示交互窗口的原因。为了使InteractionRequest工作,我需要导航到另一个视图,然后返回。
为什么会这样?视图是否在viewmodel之后创建得太晚,因此无法将InteractionTrigger订阅给交互请求?

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

您在哪里初始化MyInteractionRequest?@R.Richards,直接在属性声明处初始化?您使用的是哪个版本的prism?我最终使用了此方法。谢谢