当模块加载时,我正在导航到视图:
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订阅到交互请求?
答案 0 :(得分:1)
我的猜测是,在您提出请求时,视图尚未初始化。这意味着没有创建任何绑定,也没有添加任何处理程序。你总的来说是不好的做法。如果您必须在首次显示页面时显示弹出窗口,请为视图的已加载事件添加一个事件到命令行为,并在那里显示您的弹出窗口。这可确保页面已完全加载并且已完成所有绑定。