【mahapps.metro】WPF窗体关闭,提示用户是否退出对话框

写在前面的话

在项目中,通常我们会在用户选择退出系统时给出一定的提示,让用户确认是否退出。并且需要使窗体右上角的关闭按钮和我们自定义的关闭按钮行为相一致。这篇文章会逐步实现我们的目的。

如何实现

编写窗体Closing事件的方法

方法有两种:

  • 在XAML文件中添加自定义的Closing事件方法

这里写图片描述

  • 在窗体的属性为Closing事件绑定方法

【mahapps.metro】WPF窗体关闭,提示用户是否退出对话框_第1张图片

完成MainWindow_Closing()方法

#region 窗体关闭
        /// <summary>
        /// 窗体关闭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = true;
            CancellationToken token;
            TaskScheduler uiSched = TaskScheduler.FromCurrentSynchronizationContext();
            Task.Factory.StartNew(DialogsBeforeExit, token, TaskCreationOptions.None, uiSched);

        }
        /// <summary>
        /// 关闭窗体之前的提示对话框
        /// </summary>
        private async void DialogsBeforeExit()
        {
            MessageDialogResult result = await this.ShowMessageAsync(this.Title, "您真的要离开吗?", MessageDialogStyle.AffirmativeAndNegative);
            if (result == MessageDialogResult.Negative)
            {
                return;
            }
            else//确认退出
            {
                //系统退出需要修改的
            }
        }
        #endregion

效果

【mahapps.metro】WPF窗体关闭,提示用户是否退出对话框_第2张图片

添加退出按钮的单击事件方法

#region 退出
        /// <summary>
        /// 退出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lstExit_Selected(object sender, RoutedEventArgs e)
        {
            this.Close();//关闭窗体
        }
        #endregion

关闭窗体就会调用MainWindow_Closing方法,这样窗体右上角的关闭按钮就和我们自定义的退出按钮行为一致了。

你可能感兴趣的:(【mahapps.metro】WPF窗体关闭,提示用户是否退出对话框)