WP8.1StoreApp(WP8.1RT)---MessageBox与MessageDialog
在WP7和WP8中,MessageBox是跟WinForm中一样常用的对话框,但是有一个显著的缺点,就是WP7/8中默认的MessageBox是阻塞线程的。也许是由于这个原因,WP8.1/Win8中采用了异步的MessageDialog对话框, 其扩展性和可定制性更强。但是在很多情况下需要挂起线程等待用户响应或者是单纯怀念MessageBox的简单方便的使用方式。于是我封装了一下WP8.1中的MessageDialog,使其可以像MessageBox一样简单的使用。
public sealed class MessageBox
{
// 摘要:
// 显示包含指定文本和“确定”按钮的消息框。
//
// 参数:
// messageBoxText:
// 要显示的消息。
//
// 异常:
// System.ArgumentNullException:
// messageBoxText 为 null。
public async static Task<MessageBoxResult> Show(string messageBoxText)
{
if (messageBoxText == null)
throw new ArgumentNullException("messageBoxText is null"); var tcs = new TaskCompletionSource<MessageBoxResult>(); var dialog = new MessageDialog(messageBoxText); dialog.Commands.Add(new UICommand("确定", command =>
{
tcs.SetResult((MessageBoxResult)command.Id);
}, MessageBoxResult.OK)); dialog.DefaultCommandIndex = ;
dialog.CancelCommandIndex = ; await dialog.ShowAsync(); return await tcs.Task;
} //
// 摘要:
// 显示包含指定文本、标题栏标题和响应按钮的消息框。
//
// 参数:
// messageBoxText:
// 要显示的消息。
//
// caption:
// 消息框的标题。
//
// button:
// 一个值,用于指示要显示哪个按钮或哪些按钮。
//
// 返回结果:
// 一个值,用于指示用户对消息的响应。
//
// 异常:
// System.ArgumentNullException:
// messageBoxText 为 null。- 或 -caption 为 null。
//
// System.ArgumentException:
// button 不是有效的 System.Windows.MessageBoxButton 值。
public async static Task<MessageBoxResult> Show(string messageBoxText, string caption, MessageBoxButton button)
{
if (messageBoxText == null)
throw new ArgumentNullException("messageBoxText is null");
if (caption == null)
throw new ArgumentNullException("caption is null");
if (button != MessageBoxButton.OK && button != MessageBoxButton.OKCancel)
throw new ArgumentException("button is null"); var tcs = new TaskCompletionSource<MessageBoxResult>(); var dialog = new MessageDialog(messageBoxText,caption); dialog.Commands.Add(new UICommand("确定", command =>
{
tcs.SetResult((MessageBoxResult)command.Id);
}, MessageBoxResult.OK)); if (button==MessageBoxButton.OKCancel)
{
dialog.Commands.Add(new UICommand("取消", command =>
{
tcs.SetResult((MessageBoxResult)command.Id);
}, MessageBoxResult.Cancel));
} dialog.DefaultCommandIndex = ;
if(button==MessageBoxButton.OKCancel)
dialog.CancelCommandIndex = ;
else
dialog.CancelCommandIndex = ; await dialog.ShowAsync(); return await tcs.Task;
}
} // 摘要:
// 指定显示消息框时要包含的按钮。
public enum MessageBoxButton
{
// 摘要:
// 仅显示“确定”按钮。
OK = ,
//
// 摘要:
// 同时显示“确定”和“取消”按钮。
OKCancel = ,
} // 摘要:
// 表示对消息框的用户响应。
public enum MessageBoxResult
{
// 摘要:
// 当前未使用此值。
None = ,
//
// 摘要:
// 用户单击了“确定”按钮。
OK = ,
//
// 摘要:
// 用户单击了“取消”按钮或按下了 ESC。
Cancel = ,
//
// 摘要:
// 当前未使用此值。
Yes = ,
//
// 摘要:
// 当前未使用此值。
No = ,
}
调用方式:
await MessageBox.Show("demo");
await MessageBox.Show("demo", "liubaicai.com", MessageBoxButton.OKCancel);
MessageBoxResult result = await MessageBox.Show("demo", "liubaicai.com", MessageBoxButton.OKCancel);
收工
http://www.liubaicai.net/?p=298
WP8.1StoreApp(WP8.1RT)---MessageBox与MessageDialog的更多相关文章
- WP8.1StoreApp(WP8.1RT)---本地Toast
		
WP7/8中的Toast是不能在前台弹出的. WP8.1StoreApp可以利用Win8中的方式: private void Toast(string title,string content) { ...
 - WP8.1StoreApp(WP8.1RT)---发送邮件和短信
		
在WP7/8中,发送短信是利用了EmailComposeTask和SmsComposeTask来实现的. 在WP8.1 Store App中,原来的方式已经失效,采用了新的方法:ChatMessage ...
 - WP8.1StoreApp(WP8.1RT)---第三方启动
		
8.1的协议和wp8是相互通用的 被启动: 相比较wp8而言,基本变化不大,但添加方式更直观了 1:打开Package.appxmanifest 2:切换到"声明"选项卡 3:左侧 ...
 - WP8.1StoreApp(WP8.1RT)---添加推送功能和获取系统信息
		
添加推送通知 1:Package.appxmanifest中的声明添加后台任务的推送通知权限 2:var channel = await PushNotificationChannelManager. ...
 - WP8.1StoreApp(WP8.1RT)---SystemTray的变化
		
原Microsoft.Phone.Shell中的SystemTray,已经改到Windows.UI.ViewManagement中StatusBar了. 只能在代码中设置相关属性. 如: 1 2 3 ...
 - 【WP8】WP8调用官方API使用LED灯
		
在WP7中没有相关的API可以直接使用摄像头的LED等,只能通过录像时打开LED等来使用,在WP8中添加了相关的调用接口,可以方便的使用LED灯,并且支持后台,废话不多说,直接上代码 1.在 WMAp ...
 - WP8.1 Study4:WP8.1中控件集合应用
		
1.AutoSuggestBox的应用 在xaml里代码可如下: <AutoSuggestBox Name="autobox" Header="suggestion ...
 - Windows Phone 8.1又有什么新花样
		
今年微软新任CEO提出了“Mobile First and Cloud First”的发展战略,随着微软Mobile First战略的实行,开发者是时候重视Windows Phone了.你可能不相信, ...
 - “Win10 UAP 开发系列”之主题模式切换
		
微软动作真是快,本来想写WP8.1RT系列,结果刚整理了一点就出Win10 UAP了.不过还好RT到Win10的差别还不算太大.前两天参加了Win10开发极客秀,虽然没获奖,不过在韦恩卑鄙的帮助下顺利 ...
 
随机推荐
- [代码][deque容器练习]打分案例
			
案例要求: //打分案例(sort算法排序)//创建5个选手(姓名.得分),十个评委对五个选手进行打分//得分规则:去除最高分,去除最低分,取出平均分//按得分对5个选手进行排名 源代码: //打分案 ...
 - easyui制作进度条案例demo
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
 - 「小程序JAVA实战」小程序的分享和下载功能(69)
			
转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudefenxianghexiazaigongneng68/ 在小程序上 ...
 - (1)activiti认识以及数据库和插件配置
			
工作流介绍 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程, 从而实现某个预期的业务目标, ...
 - maven 统一管理依赖的版本号
 - write()和print()还有<%= %>的细微区别
			
1.首先介绍write()和print()方法的区别: (1).write():仅支持输出字符类型数据,字符.字符数组.字符串等 (2).print():可以将各种类型(包括Object)的数据通过默 ...
 - codeforces:MEX Queries分析和实现
			
首先说明一下MEX,设S是自然数集合N的一个子集,那么S的MEX则为min(N\S),即不包含于S的最小自然数. 题目大意是存在一个空集S,提供n组输入(n<10^5),每组输入对应下面的一个指 ...
 - IPMI总结
			
http://www.chenshake.com/summary-of-ipmi/ 记忆的很清楚,2000年的时候,当时还是Compaq,推出第一款远程控制卡,当时听起来非常神奇.可以远程开机,关机, ...
 - SqlMapConfig.xml配置文件的配置内容
			
SqlMapConfig.xml中配置的内容和顺序如下: * properties(属性) * settings(全局配置参数) * typeAliases(类型别名) * typeHandlers( ...
 - 简单拼接图像的tile_images和tile_images_offset算子
			
有时候通常需要简单的拼图,不涉及图像融合之类的,仅仅是简单的平移将多张图拼接成一张图.tile_images和tile_images_offset就是用于简单拼图的2个算子. 谈到拼图,肯定有以下问题 ...