[英]Extend GoBack function in NavigationWindow
我有一些页面的NavigationWindow。 我用按钮从一个导航到另一个,然后返回导航窗口的功能。 我的问题是,某些页面在加载时会使用描述符,当您在Navigationwindow中使用go back函数时,我想将其处置(实际上,“描述符”是Kinect,并且在页面加载时,它会启动Kinect带有sensor.start(),我想在回退时停止它,sensor.stop()...但是我认为它与该问题的文件描述符相同,并且更多的人在使用文件描述符)。
有什么方法可以扩展页面中的GoBack函数来处理描述符(在我的代码中,我只需要调用sensor.stop();)?
提前致谢
我在评论中的建议是基于Windows Phone开发经验的。.但是,当我尝试使用Navigationwindow在wpf中应用该解决方案后,我在WP / silverlight中找不到像OnNavigatedTo / OnNavigatedFrom这样的东西。
但是我发现可以使用NaviagtionWindow的Navigating事件。 在这种情况下,您可以获取this.CurrentSource
,即Page2(如果从Page2导航回Page1)并在该Page中放置描述符。
希望这项工作。
好的,我找到了解决方法。 这也适用于以下问题:如何在WPF中放置对象。 在WPF中有关GC处置对象的所有帖子都很奇怪,而您不能自己处置它。 是的,GC会自动配置对象,但是在他愿意的时候。 但是,也许您想立即进行处置,或者您有一个对象在处置之前需要先进行操作。 在我的情况下,需要在处理之前停止Kinect(可以不停止而进行处理,但是kinect红外传感器仍在工作)。 GC不是解决方案,因为我需要在处置之前将其停止。
因此,解决方案:
public partial class MyClass : Page
{
private KinectSensor sensor;
public MyClass()
{
InitializeComponent();
this.Loaded += (s, e) => { NavigationService.Navigating += NavigationService_Navigating; };
// What you want to add to the constructor
// I want to start Kinect
sensor = KinectSensor.KinectSensors.FirstOrDefault(k => k.Status == KinectStatus.Connected);
sensor.Start();
}
public void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e)
{
if (e.NavigationMode == NavigationMode.Back)
{
// What you want to do.
// I want to stop and dispose Kinect
if (sensor != null)
{
sensor.Stop();
sensor.Dispose();
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.