张高兴的 UWP 开发笔记:定制 ContentDialog 样式

简介:   我需要一个背景透明的 ContentDialog,像下图一样。如何定制?写了一个简单的示例(https://github.com/ZhangGaoxing/uwp-demo/tree/master/ContentDialogDemo)   首先在项目里新建一个资源字典,并在 App.xaml 添加以下代码将此资源字典合并   这时新添加的资源字典还是空的,我们需要找到 ContentDialog 的默认样式。

  我需要一个背景透明的 ContentDialog,像下图一样。如何定制?写了一个简单的示例(https://github.com/ZhangGaoxing/uwp-demo/tree/master/ContentDialogDemo

  首先在项目里新建一个资源字典,并在 App.xaml 添加以下代码将此资源字典合并

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Style.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

  这时新添加的资源字典还是空的,我们需要找到 ContentDialog 的默认样式。这些默认样式在已安装的 Windows 10 SDK 中被提供,比如 SDK 默认安装在 C 盘的时候,控件样式字典 generic.xaml 可以在 C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.14393.0\Generic 这里找到。找到后用 Visual Studio 打开,如下图。

  接下来按 Ctrl+F 搜索 ContentDialog 找到默认样式复制到刚才新建的资源字典中,然后根据需要定制样式即可。

  像我需要的透明 ContentDialog 只需要更改 PropertyBackgroundValue 值为 Transparent 即可。注意不要忘记给一个 x:Key 值,也就是起个名称,这里为 x:Key="TransparentDialog" 。

 

  样式定制完成,并且资源字典也合并完成,下面就是要在代码中去调用了。资源字典的调用也是靠键值对,输入对应的键来返回对应的值。

  在项目合适的位置新建一个 Style 类型的字段,用来获取样式。

Style transparent = (Style)Application.Current.Resources["TransparentDialog"];

  样式获取完成后设置 ContentDialog 的 Style 属性即可

var contentDialog = new ContentDialog()
{
    Content = new Content("This is a transparent ContentDialog."),
    PrimaryButtonText = "确定",
    FullSizeDesired = false
};

contentDialog.Style = transparent;

contentDialog.PrimaryButtonClick += (_s, _e) =>
{
    contentDialog.Hide();
};
await contentDialog.ShowAsync();

  这样,一个定制样式的 ContentDialog 就完成了。

目录
相关文章
|
监控 安全 Java
SpringBoot-开启Admin监控服务
本文介绍如何在SpringBoot项目中开启Admin监控服务。
293 0
|
3月前
|
人工智能 数据库 云计算
🔥躺着赚佣金!阿里云推荐计算巢服务让你轻松"带货"云计算
阿里云推出“推荐服务赚佣金”计划,无需技术背景,分享链接即可轻松赚取额外收入。高达20%佣金,200+精选服务任选,实时追踪收益,适合个人推广的数字副业!
269 9
|
数据采集 数据可视化 数据挖掘
使用Pandas对Data列进行基于顺序的分组排列
使用Pandas对Data列进行基于顺序的分组排列
254 0
|
3月前
|
运维 监控 负载均衡
高效运维实践:常见问题的应对策略与实践经验
本文探讨了运维工作中的五大核心挑战及应对策略,涵盖负载均衡优化、数据库性能提升、系统监控预警、容器化与微服务运维等方面,旨在帮助企业提升系统稳定性与运维效率。
|
机器学习/深度学习 算法
【机器学习系列】- 准确率、召回率、F1值的思考
关于如何评估算法,我们常通过准确率、召回率和F1值进行评估。
2595 0
【机器学习系列】- 准确率、召回率、F1值的思考
|
安全 Unix Linux
Linux系统的优势
【8月更文挑战第8天】Linux系统的优势
490 2
|
12月前
|
编解码 前端开发 UED
|
开发框架 .NET C#
使用C#进行.NET框架开发:深入探索与实战
【5月更文挑战第28天】本文探讨了C#在.NET框架中的应用,展示了其作为强大编程语言的特性,如类型安全、面向对象编程。C#与.NET框架的结合,提供了一站式的开发环境,支持跨平台应用。文中介绍了C#的基础知识,如数据类型、控制结构和面向对象编程,以及.NET的关键技术,包括LINQ、ASP.NET和WPF。通过一个实战案例,展示了如何使用C#和ASP.NET开发Web应用,包括项目创建、数据库设计、模型和控制器编写,以及视图和路由配置。本文旨在揭示C#在.NET开发中的深度和广度,激发开发者探索更多可能性。
|
人工智能 Java API
Java中的智能语音识别与处理技术实践
Java中的智能语音识别与处理技术实践
|
弹性计算 人工智能 供应链
云服务器 ECS产品使用问题之端口已加入安全组,但是端口不通,同时服务器已关闭防火墙,是什么导致的
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。