WinUI3开发笔记(Ⅱ)
- WinUI3中的"
MessageBox.Show()"
# (一,如何实现)
"开发WinUI3,第一个不适就是消息弹窗!"
WinUI中没有C#.NetFrameWork的MessageBox,但怎么实现弹窗呢?官方给出了方法
官方给出了示例代码,可在应用商店搜索"Xaml Controls Gallery"或前往官网-开发人员中心-查看示例可以下载示例(包括源代码)

点击查看xaml代码
<Page
x:Class="AppUIBasics.ControlPages.ContentDialogContent"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<!-- Content body -->
<TextBlock Text="Lorem ipsum dolor sit amet, adipisicing elit." TextWrapping="Wrap" />
<CheckBox Content="Upload your content to the cloud."/>
</StackPanel>
</Page>
点击查看C#代码
private async void ShowDialog_Click(object sender, RoutedEventArgs e)
{
ContentDialog dialog = new ContentDialog();
dialog.Title = "Save your work?";
dialog.PrimaryButtonText = "Save";
dialog.SecondaryButtonText = "Don't Save";
dialog.CloseButtonText = "Cancel";
dialog.DefaultButton = ContentDialogButton.Primary;
dialog.Content = new ContentDialogContent();
var result = await dialog.ShowAsync();
}
C#代码是放置在事件中的,比如按钮点击时弹窗,则放入这一段,其中倒数第二条dialog.Content = new ContentDialogContent(); 则是连接的另一个xaml页面作为内容,去掉也可以的
效果如下:

当然,也可以放置其他内容,比如颜色选择,图片剪辑等,此处就不过多展示(因为颜色选择器本人还未弄懂)
(二,报错问题)
当我兴高采烈放到一个"Test"项目中尝试的时候,出错啦!
为什么出错呢?直接运行会直接导致闪退,使用调试的时候,看到了以下错误:

System.ArgumentException:“Value does not fall within the expected range.”
也就是值不在预期范围内,超范围了呗!
后来经过几个小时的不断尝试,我发现...
来自https://blog.csdn.net/flyingdream123/article/details/122523347的博主给出了问题所在
也就是在var result = await dialog.ShowAsync();的前面需设置XamlRoot
点击查看代码
if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 8))
{
dialog.XamlRoot = this.Content.XamlRoot;
}
折腾了好久的问题终于解决了!官方竟然没给出这一段...[无语]
(三,获取点击的按钮)
如何判断用户点击了哪个按钮呢?
var result = await dialog.ShowAsync();则是获取了按钮值,判断方法如下:

点击查看代码
if (result == ContentDialogResult.Primary)
{
//第一按钮"
}
else if (result == ContentDialogResult.Secondary)
{
//第二按钮"
}
else
{
//取消按钮
}
注意!前面的C#代码中设置按钮的片段中,取消按钮是必须的,其余按钮是可选的
特别说明:弹窗需要使用异步方法!

WinUI3开发笔记(Ⅱ)的更多相关文章
- WinUI3开发笔记(Ⅰ)
·背景:自从接触了微软的WinUI3的界面,瞬间觉得C# .NetFramework不香了,于是入坑网上教程极少的WinUI3的开发...... 难 (一,安装开发环境) 具体参考微软官网说明http ...
- [开发笔记]-未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出【转载自:酷小孩】
原文地址:http://www.cnblogs.com/babycool/p/3199158.html 今天打算用VisualStudio2012做一个js效果页面测试的时候,打开VS2012新建项目 ...
- EasyUI 开发笔记(二)
接上篇 :EasyUI 开发笔记(一) (http://www.cnblogs.com/yiayi/p/3485258.html) 这期就简单介绍下, easyui 的 list 展示, 在easy ...
- EasyUI 开发笔记(一)
由于某些原因,在公司做的后台需要改成类似于Ext.js 形式的后台,主要看好其中的 框架布局,以及tab开页面和弹出式内部窗体. 后来看看,改成EasyUI,较Ext.js 库小很多,也便于公司的初级 ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用 ...
- Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境
引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...
- 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新
今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...
- Lucene/Solr搜索引擎开发笔记 - 第1章 Solr安装与部署(Jetty篇)
一.为何开博客写<Lucene/Solr搜索引擎开发笔记> 本人毕业于2011年,2011-2014的三年时间里,在深圳前50强企业工作,从事工业控制领域的机器视觉方向,主要使用语言为C/ ...
随机推荐
- 运筹学之"简单平均预测法"和"加权滑动平均预测法"和"确定平滑系数"
1.简单滑动平均预测法就是将所有的售价加起来除以总数 665/5=133 2.加权滑动平均预测法:需要将售价分别乘以权之和,并除以权之和 1771/13≈136.23 二.某木材公司销售房架构件,其中 ...
- C语言之基本组成(知识点6)
一.C程序基本组成 C程序是由语句组成的,通常包括一个或多个函数,其中有且只有一个函数称为 主函数,其函数名为main. 二.C程序的组成特点: 1.每个C程序由一个或多个函数组成.每个C程序有且仅有 ...
- iOS全埋点解决方案-界面预览事件
前言 我们先了解 UIViewController 生命周期相关的内容和 iOS 的"黑魔法" Method Swizzling.然后再了解页面浏览事件($AppViewScr ...
- 小程序入门系列之 tabBar
本系列为简单入门系列,以一定概括性思路来叙述内容,具体可以查看官网 大部分的电商应用都是底部或顶部多 tab 的模式. 下面我们从配置角度来分析一下: 第一个:position 配置如下: 默认是 b ...
- 【uniapp 开发】uni-app 中如何打开外部应用
我们在开发 App 应用中,经常会遇到打开第三方程序的场景,比如打开手机淘宝.通过第三方浏览器打开一个 url 等等. App不像网页可以使用http超链接互相跳转,但手机os设计了scheme机制, ...
- Mybatsi注解开发-基础操作
1.导入坐标 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pag ...
- CentOS7.x 离线安装和开机启动 supervisor 4.2.4
CentOS7.x 服务器 离线安装 开机启动 supervisor 4.2.4
- Android 环境搭建记录
Android 环境搭建记录 官网 https://developer.android.com/ studio 下载地址 官方下载 jikexueyuanwiki 国内镜像 studio历史版本 安装 ...
- 痞子衡嵌入式:大话双核i.MXRT1170之单独在线调试从核工程的方法(IAR篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170下单独在线调试从核工程的方法(基于IAR). 两年前痞子衡写过一篇<双核i.MXRT1170之Cortex-M ...
- 学生管理系统(python实现)
# 定一个列表,用来存储所有的学生信息(每个学生是一个字典) info_list = [] def print_menu(): print("------------------" ...
