简化版“询问用户是否退出”
投稿于 被查看 22919 次 评论:241
简化版“询问用户是否退出”
这篇是 Windows Phone 自定义弹出框和 Toast 通知 的简化版,区别就是之前的自定义 MessageBox
控件是整个 app 中所有页面共享的,下面的简化版 MessageBox 只是应用于 MainPage 页面中,“询问
用户是否退出”的自定义弹出框。
在应用或游戏程序中,经常的一个场景就是在用户点击 Back 键时,应用询问用户是否退出,通常是重写
Page 页面的事件:
OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
但是,当弹出 MessageBox 10秒钟用户没有响应,应用则会退出,其实并不是 MessageBox 的 Bug,只要阻塞
OnBackKeyPress() 方法超过 10秒 ,应用都会退出的,如果先调用 e.Cancle = true 取消导航,再询问用户
是否退出,就不会出现这个问题。如果用户点击“确定”,则调用 App.Current.Terminate(); 结束当前应用进程。
= .Dispatcher.BeginInvoke( (MessageBox.Show(, , MessageBoxButton.OKCancel) ==
为了解决这个问题,方式之一就是自定义一个 MessageBox 控件:
页面的交互如下图:
第一步:自定义一个名为 MyDialog 的用户控件,页面的主要 xaml:
Content
自定义弹出框相应的 C# :
=
(_instance == =
AutoResetEvent myResetEvent = AutoResetEvent(
Task<MessageBoxResult> Show( messageBoxText, Task<MessageBoxResult>.Factory.StartNew(() =>=== (button ====
btnOk_Click(= = ==
btnCancle_Click(= = ==
(Instance != && Instance.gridDialog.Visibility ==,
第二步:在 MainPage.xaml 页面中,添加如下代码:
在相应的 C# 页面,重写 OnBackKeyPress 方法:
e.Cancel =
(MessageBoxResult.OK == MyDialog.Show(,
代码工程下载
用户评论