2013-01-11 252 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

窗口名称并不重要 –