我有一个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");
}
}
但问题是这个事件在每个窗口都有,所以当我关闭它时,很多其他窗口看不见的提示也会出现。如果我只在一个窗口关闭,有没有办法避免其他内容?
答案 0 :(得分:3)
您是否尝试过在App.xaml中添加Exit attibute?
这将是一个更好的解决方案,因为您只需要编写一次此确认退出代码。关于窗口名称,您可以将发件人强制转换为窗口以查找其名称
答案 1 :(得分: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();
}