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
### 如何使用 Visual Studio 2022 创建 Windows Store 应用 #### 准备工作 为了创建 Windows Store 应用,确保已安装最新版的 Visual Studio 2022 并更新所有组件。通过 Visual Studio Installer 可以轻松完成此操作。 #### 安装必要的工具包 对于 UWP (Universal Windows Platform) 应用开发而言,除了基本的 .NET 工作负载外,还需要额外的工作负载来支持这类项目的构建。在安装过程中应选择 "通用 Windows 平台开发" 这个工作负载[^4]。 #### 新建项目 打开 Visual Studio 后,在起始窗口中选择 “新建项目”。如果已经打开了其他项目,则可以通过菜单栏上的 `文件` -> `新建` -> `项目...` 来访问相同的功能。 在弹出的新建项目对话框里,搜索并挑选适合用于制作 Windows Store 应用的模板,比如 C# 或者 C++ 的空白应用程序(UWP) 模板。 #### 配置应用信息 一旦选择了合适的模板之后,将会进入下一步骤——配置新的 UWP 项目属性页面。这里可以设置诸如命名空间名称、最低目标版本以及最大测试版本等参数。这些设定决定了应用能够兼容哪些设备平台及其特性集。 #### 编写代码与设计界面 利用 XAML 文件编辑器来进行用户界面的设计部分,而逻辑处理则交由对应的 Code-behind 文件负责实现。XAML 提供了一种声明式的标记语言用来描述 UI 布局结构,使得开发者能更直观高效地搭建交互式体验丰富的图形化前端。 #### 发布前准备 当完成了初步的应用功能后,就可以着手考虑将其提交给 Microsoft 商店了。此时需要注意的是要提前准备好产品的图标资源以及其他元数据资料以便后续关联商店账户时使用。另外还需确认本地计算机上是否正确设置了有效的开发者证书,这对于签名打包过程至关重要。 #### 测试与调试 借助于内置模拟器或是连接实际物理硬件的方式进行全面细致的质量检测环节。Visual Studio 自带强大的诊断工具可以帮助定位潜在性能瓶颈所在之处,并提供优化建议指导改进措施方向。 ```csharp // 示例:简单按钮事件处理器 private void Button_Click(object sender, RoutedEventArgs e) { var messageDialog = new MessageDialog("Hello from your first UWP app!"); await messageDialog.ShowAsync(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值