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");

        }
    }

但问题是这个事件存在于每个窗口中,所以当我关闭它时,其他窗口中的许多其他不可见的提示也会出现。如果我只在一个窗口中关闭,有没有办法避免其他提示?

4

2 回答 2

3

您是否尝试过在 App.xaml 中添加退出属性?

这将是一个更好的解决方案,因为您只需编写此确认退出代码一次。关于窗口名称,您可以将发件人投射到窗口以找出其名称

于 2013-01-11T14:50:44.123 回答
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();   
}
于 2013-01-11T14:42:40.907 回答