Windows Store apps开发[48]MessageDialog的使用

注:本文由BeyondVincent(破船)原创首发

        转载请注明出处:BeyondVincent(破船)@DevDiv.com

Windows Store apps开发[48]MessageDialog的使用_第1张图片


更多内容请查看下面的帖子


[DevDiv原创]Windows 8 开发Step by Step



小引

最近有开发者问起Windows Store app中对话框如何使用,以及如何自定义对话框。在这篇文章中,我介绍Windows Store app中自带的对话框MessageDialog,实际上非常简单。在下一篇文章中,我将介绍如何使用Popup自定义对话框。


MessageDialog介绍

MessaDialog类代表了一个对话框,该对话框中最多可以有3个Command。默认情况下有一个关闭命令。当MessageDialog显示出来时,会对屏幕进行灰度处理,并阻止其它操作。
关于对话框的详细资料,可以来参考msdn上的介绍,如下链接:
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.popups.messagedialog


默认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();
}

运行效果:

Windows Store apps开发[48]MessageDialog的使用_第2张图片


带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();
}

运行效果:

Windows Store apps开发[48]MessageDialog的使用_第3张图片


获取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
    }
}

运行效果:

Windows Store apps开发[48]MessageDialog的使用_第4张图片

设置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
    }
}


程序主画面运行效果


Windows Store apps开发[48]MessageDialog的使用_第5张图片

代码下载地址:

http://www.devdiv.com/thread-166667-1-1.html

你可能感兴趣的:(Windows Store apps开发[48]MessageDialog的使用)