我有多个页面的应用程序,与navigationto逻辑连接 .
其中一个页面包含带网络摄像头绑定的媒体元素 . 进入后台模式后(例如,通过最小化应用程序思想点击系统菜单),相机元素停止 . 所以,我订阅了
Windows.ApplicationModel.Core.CoreApplication.LeavingBackground事件并重新初始化摄像头 . 如果当前页面是具有此订阅和相机元素的页面,则一切正常 . 如果当前页面是另一个页面,并且应用程序已恢复,则LeavingBackground无论如何都会发生此事件,因此隐藏页面会尝试重新初始化相机 .
我试图设置this.NavigationCacheMode = NavigationCacheMode.Disabled,因此理论上必须在根据MSDN的NavigatedTo事件之后处理包含媒体元素和订阅LeavingBackground事件的页面实例 . 但是我不理解其他方式的工作 .
似乎相机页面实例化了一次,永远,并且将永远收到LeavingBackgound事件 - 这对我来说很糟糕 .
我试图将Window.Current.Content.GetType()与包含camera元素的页面类型进行比较,但有时这种类型包含其他页面的类型,但有时它会随Content.Content移动,所以我卡住了 .
2 回答
我假设您在离开该页面时必须取消注册事件处理程序:
您需要处理Suspending和Resuming事件以正确清理和重新初始化相机,就像相机示例应用程序中显示的那样:
https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/CameraStarterKit/cs/MainPage.xaml.cs
谢谢,Stefan Wick - Windows开发人员平台