我有一个包含多个页面的应用程序,使用Navigateto逻辑连接这些页面。
其中一个页面包含带有网络摄像头绑定的媒体元素。如果进入后台模式(例如通过单击系统菜单最小化应用程序),则相机元素会停止。因此,我订阅了Windows.ApplicationModel.Core.CoreApplication.LeavingBackground事件并重新初始化相机。如果当前页面是具有此订阅和相机元素的页面,则一切正常。如果当前页面是另一个页面,并且应用程序被恢复,LeavingBackground事件仍然会发生,因此隐藏页面尝试重新初始化相机。
我尝试设置this.NavigationCacheMode = NavigationCacheMode.Disabled,因此包含媒体元素和订阅LeavingBackground事件的页面实例在NavigatedTo事件后理论上必须被处理,但它的工作方式与我不理解的方式相反。
似乎相机页面只实例化一次,永远不会被处理,并始终接收LeavingBackgound事件 - 对我来说这很糟糕。
我尝试将Window.Current.Content.GetType()与包含相机元素的页面类型进行比较,但有时该类型包含其他页面的类型,但有时它会随着Content.Content而改变,所以我陷入困境。