注:本文由BeyondVincent(破船)原创首发
转载请注明出处:BeyondVincent(破船)@DevDiv.com
更多内容请查看下面的帖子
[DevDiv原创]Windows 8 开发Step by Step
小引
最近有开发者问起Windows Store app中对话框如何使用,以及如何自定义对话框。在这篇文章中,我介绍Windows Store app中自带的对话框MessageDialog,实际上非常简单。在下一篇文章中,我将介绍如何使用Popup自定义对话框。
MessageDialog介绍
MessaDialog类代表了一个对话框,该对话框中最多可以有3个Command。默认情况下有一个关闭命令。当MessageDialog显示出来时,会对屏幕进行灰度处理,并阻止其它操作。
关于对话框的详细资料,可以来参考msdn上的介绍,如下链接:
默认MessageDialog的使用
如下代码,直接构造,然后设置Title即可,然后调用ShowAsync进行显示。
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
MessageDialog dialog = new MessageDialog("你好,这里是Windows Store app学习之旅!");
dialog.Title = "温馨提示";
await dialog.ShowAsync();
}
运行效果:
带Command的MessageDialog
MessageDialog中有一个Command列表,如下定义:
IList<IUICommand> Commands
我们可以往这个列表中添加自己的Command,
注意,最多只能是3个。如下代码:
在下面代码中,Command对应的操作是通过lambda表达式进行的,当然,这里也可以把操作内容单独封装在一个函数里面,此处略。
private async void Button_Click_2(object sender, RoutedEventArgs e)
{
MessageDialog dialog = new MessageDialog("你好,欢迎访问移动技术开发社区:DevDiv.com");
dialog.Title = "温馨提示";
dialog.Commands.Add(new UICommand("DevDiv主页", command =>
{
//在这里做相关操作
OpenDevDiv("http://www.DevDiv.com");
}));
dialog.Commands.Add(new UICommand("关闭", command =>
{
//在这里做相关操作
}));
await dialog.ShowAsync();
}
运行效果:
获取MessageDialog的返回值
我们可以获取MessageDialog的返回值,以根据返回内容,做相应的操作,如下代码:
private async void Button_Click_3(object sender, RoutedEventArgs e)
{
MessageDialog dialog = new MessageDialog("你好,欢迎访问移动技术开发社区:DevDiv.com");
dialog.Title = "温馨提示";
dialog.Commands.Add(new UICommand("DevDiv主页", null, 0));
dialog.Commands.Add(new UICommand("DevDiv论坛", null, 1));
dialog.Commands.Add(new UICommand("关闭", null, 2));
var command = await dialog.ShowAsync();
if (Convert.ToInt32(command.Id) == 0)
{
OpenDevDiv("http://www.DevDiv.com");
}
else if (Convert.ToInt32(command.Id) == 0)
{
OpenDevDiv("http://www.devdiv.com/forum.php");
}
else
{
// do nothing
}
}
设置MessageDialog中Command的index
MessageDialog中的index有:
CancelCommandIndex:当按Esc键时,会触发该index对应的Command
DefaultCommandIndex:当按Enter键时,会触发该index对应的Command
如下代码:
当按Enter键时,访问DevDiv主页
当按Esc键时,做关闭命令
private async void Button_Click_4(object sender, RoutedEventArgs e)
{
MessageDialog dialog = new MessageDialog("你好,欢迎访问移动技术开发社区:DevDiv.com");
dialog.Title = "温馨提示";
dialog.Commands.Add(new UICommand("DevDiv主页", null, 0));
dialog.Commands.Add(new UICommand("DevDiv论坛", null, 1));
dialog.Commands.Add(new UICommand("关闭", null, 2));
dialog.DefaultCommandIndex = 0;
dialog.CancelCommandIndex = 2;
var command = await dialog.ShowAsync();
if (Convert.ToInt32(command.Id) == 0)
{
//OpenDevDiv("http://www.DevDiv.com");
}
else if (Convert.ToInt32(command.Id) == 1)
{
OpenDevDiv("http://www.devdiv.com/forum.php");
}
else
{
// do nothing
}
}
程序主画面运行效果
代码下载地址:
http://www.devdiv.com/thread-166667-1-1.html