2012-05-23 59 views
0

我有一個由UserControls而不是Windows組成的WPF窗體。與Windows不同,UserControls沒有UserControl.CloseUserControl.Closing。當我的應用程序關閉時,我需要能夠運行代碼,方法是點擊應用程序右上角熟悉的紅色x。有沒有人曾經這樣做過?請記住,我正在使用MVVM。XAML - 在WPF窗體關閉時運行代碼

這裏是頁面的XAML:

<UserControl x:Class="ClassName" 
      <!--etc..--> 
      > 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <!--Columns--> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <!--Rows--> 
     </Grid.RowDefinitions> 
     <!--WPF Content--> 
    </Grid> 
</UserControl> 

回答

0

你沒有任何窗戶?這怎麼可能?你在屏幕上創建它們嗎?

那麼你不能完全在XAML中完成它,但如果你想在關閉你的應用程序之前得到通知,那麼Application.Exit怎麼樣。如果你想要一個可以被隔離和取消的解決方案,你可以在你的主窗口上使用Closing,如果你有的話。當然Closed事件也是一個解決方案。最後但並非最不重要的是,您的用戶控件上有Unloaded event

希望能幫助你一點。

+0

我使用MVVM的Phoenix風味。沒有窗戶需要。您使用HomeControler來跟蹤所有'窗口'。在HomeController內部是每個'窗口'的構造函數,每當你設置一個tile的'Commands:Invoke.OnClick'到''Home.NameOfWindow''時,就會調用它。 '卸載'接近唯一可行的事情。問題是,當你使用紅色x退出應用程序時,'Unload'永遠不會發生。 – Stylzs05

+0

那麼只有應用程序對象,它是某種單身人士,您可以在其中偵聽退出事件。 – dowhilefor

+0

我想弄清楚應用程序在哪裏偵聽關閉或退出。我告訴你,我不是MVVM的粉絲。 – Stylzs05