2013-01-11 256 views
2

我有一個wpf項目有幾個窗口,當我從一個窗口導航到另一個窗口時,我只隱藏一個窗口並創建其他實例,如果沒有創建,否則只是使其可見應用程序當前關閉關閉窗口提示

所有窗口中有窗口關閉的事件處理程序

private void Window_Closing_1(object sender, CancelEventArgs e) 
    { 
     { 

     string message = "You are trying to close window " + this.Name + " .Are you sure?"; 
     string caption = "Exit"; 
     MessageBoxButton buttons = MessageBoxButton.YesNo; 
     MessageBoxImage icon = MessageBoxImage.Question; 
     if (MessageBox.Show(message, caption, buttons, icon) == MessageBoxResult.Yes) 
     { 
      App.Current.Shutdown(); 

     } 
     else 
     { 
     MessageBox.Show("Closing aborted"); 

     } 
    } 

,但問題是這樣的事件是在那裏每一個窗口,所以當我關閉它很多其他的提示從其他窗口,它是不可見也顯示出來。如果我只在一個窗口中關閉,是否有避免其他代詞的方法?

回答

1

只是在另一個類中創建一個靜態方法來處理關閉窗體。

public class X 
{ 
    private static bool isClosingHandled = false; 

    public static void HandleClose() 
    { 
     //// app closing logic 
     isClosingHandled = true; 
    } 
} 

private void Window_Closing_1(object sender, CancelEventArgs e) 
{ 
    X.HandleClose(); 
} 
3

您是否在App.xaml中嘗試添加Exit attibute?

這將是一個更好的解決方案,因爲你只需要寫一次這個確認退出代碼。關於窗口名稱,您可以將發件人發送到窗口以便查找其名稱

+0

那是什麼?我很抱歉,我是WPF的新手。我是否需要在app.xaml的private void Application_Exit_1(object sender,ExitEventArgs e)中寫入關閉窗口邏輯? –

+0

窗口名稱並不重要 –