[英]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.