无法在 OnNavigatedTo 方法中引发 InteractionRequest?
Cannot raise InteractionRequest in OnNavigatedTo Method?
加载模块时我正在导航到视图:
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 事件的订阅者,这就是没有显示交互 window 的原因。为了使 InteractionRequest 工作,我需要导航到另一个视图然后返回。
为什么会这样?视图是否在视图模型之后创建得太晚,因此它无法将 InteractionTrigger 订阅到交互请求?
我的猜测是您提出请求时视图尚未初始化。这意味着没有创建任何绑定,也没有添加任何处理程序。一般来说,你的做法是不好的做法。如果您必须在页面首次显示时显示弹出窗口,请为视图的加载事件添加一个事件以命令行为并在那里显示您的弹出窗口。这可确保页面已完全加载并已完成所有绑定。
加载模块时我正在导航到视图:
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 事件的订阅者,这就是没有显示交互 window 的原因。为了使 InteractionRequest 工作,我需要导航到另一个视图然后返回。 为什么会这样?视图是否在视图模型之后创建得太晚,因此它无法将 InteractionTrigger 订阅到交互请求?
我的猜测是您提出请求时视图尚未初始化。这意味着没有创建任何绑定,也没有添加任何处理程序。一般来说,你的做法是不好的做法。如果您必须在页面首次显示时显示弹出窗口,请为视图的加载事件添加一个事件以命令行为并在那里显示您的弹出窗口。这可确保页面已完全加载并已完成所有绑定。