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

注:本文由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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值