我有一个适用于 Windows 8 的应用程序,其中包含一个用于显示项目列表的页面(框架)和一个用于下载和显示项目详细信息的页面。我也在使用 MVVM Light 发送通知。
应用程序的使用是这样的:
打开主页
导航到列表页面
Frame.Navigate(typeof(MyPage));
选择项目
//Complete logic Frame.GoBack();
回到主页,我开始在视图模型中下载文件,我发送ONE NotificationMessage 说 BeginDownloadFile,下载后ONE NotificationMessage 说 EndDownloadFile。
我第一次执行步骤 2,3 和 4 时,我的 NotificationReceived 方法被击中一次,第二次被击中两次,依此类推。
private async void NotificationMessageReceived(NotificationMessage msg)
{
if (msg.Notification == Notifications.BeginDownloadFile)
{
FileDownloadPopup.IsOpen = true;
}
else if (msg.Notification == Notifications.EndDownloadFile)
{
FileDownloadPopup.IsOpen = false;
}
}
附加信息:我只有一个 FileDownloadPopup,但每次调用 NotificationMessageReceived 方法时都会显示一个附加弹出窗口。
我唯一的结论是,在我的应用程序中向前和向后导航之间,有多个 MainPages 被创建并且从未关闭。这导致许多 NotificationsMessageReceived 方法只是等待通知出现,以便他们可以显示他们的弹出窗口。
我有两个问题: 1. 这听起来像是 Windows 8 应用程序的正常行为吗?2、如何关闭MainPage的所有实例或返回上一个实例而不创建新实例?
在标记我的问题之前,请让我知道我是否错过了一些重要的事情。