2016-06-16 18 views
3

在WPF中,在<Window...標記上有Closing事件,我們可以在此處掛接MainWindow_OnClosing中的某些處理代碼。UWP頁面中的關閉事件是什麼?

但是在UWP應用中沒有這樣的事件。關閉我猜的是Unloaded,甚至沒有Unloading在那裏。

我只是放置了我的處置代碼,但仍然感到擔心。 Unloaded事件是否適用於此類工作?有什麼我需要注意的嗎?

+0

你想關閉應用程序或從頁面導航的事件? – AbsoluteSith

+0

當窗口關閉時,只需在ViewModel上放置我的'SpeechRecognizer'。 – Blaise

+0

我想,因爲沒有任何事件存在應用程序關閉。你可以使用'Suspending'事件來釋放資源並在'Resuming'事件中獲取它。 – AbsoluteSith

回答

4

根據MSDN,Window類有一個Closed事件。 我提到這是您發佈的Closing事件window成分的,但請記住該事件的一句話:

當窗口關閉時發生關閉事件。但是,Windows應用商店 應用程序通常使用單個窗口實例,並且不會打開和關閉其他窗口實例。

現在,使用主窗口的Frame導航系統Pages的時候,我建議你使用OnNavigatedToOnNavigatedFrom事件來處理所有的初始化和配置之類的功能。

您可能需要注意OnNavigationFrom,因爲它在頁面被卸載之前立即被調用並且不再是父框架的當前源。

一個很簡單的例子:

Windows.ApplicationModel.Resources.ResourceLoader loader; 

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 

    loader = new Windows.ApplicationModel.Resources.ResourceLoader(); 
    var navigationPageContentFormat = loader.GetString("NavigationPageContent"); 
    var navigationPageContentWhenEmpty = loader.GetString("NavigationPageContentWhenEmpty"); 

    this.ParameterTextBlock.Text = String.Format(navigationPageContentFormat, e.Parameter?.ToString() ?? navigationPageContentWhenEmpty); 
} 

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) 
{ 
    loader = null; 
} 
相關問題