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?我最终使用了此方法。谢谢