欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

简化版“询问用户是否退出”

来源: 开发者 投稿于  被查看 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(, 

 

代码工程下载

相关频道:

用户评论