UWP 在XAML设计器中使用设计时数据

1. 功能解释

有些布局没有数据很难进行可视化。 在本文档中,我们将审查从事桌面项目的开发人员可在 XAML 设计器中模拟数据的一种方法。 此方法是使用现有可忽略的”d:”命名空间来实现的。 利用这种方法,可快速将设计时数据添加到页面或控件中,而无需创建完整的模拟视图模型,或者只需测试属性更改会如何影响应用程序,而无需担心这些更改会影响你的发布版本。 所有 d: 数据仅由 XAML 设计器使用,无可忽略的命名空间值编译到应用程序中。

2. 使用此功能的前置条件

  • 设计时数据需要 Visual Studio 2019 版本 16.7 或更高版本。
  • 支持目标是适用于 .NET Core 的 Windows Presentation Foundation (WPF) 和 UWP 的 Windows 桌面项目。 如果已启用”适用于 .NET Framework 的新版 WPF XAML 设计器”预览功能,则此功能还可用于 .NET Framework。
  • 从 Visual Studio 2019 版本 16.7 开始,此功能适用于 WPF 和 UWP 框架中的所有内置控件。 16.8 预览版本现已提供对第三方控件的支持。

3. 设计时数据基本信息

设计时数据是你设置的模拟数据,使控件更易于在 XAML 设计器中进行可视化。 首先,将以下代码行添加到 XAML 文档的标头(如果这些代码行尚不存在):

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"

添加命名空间后,可将 d: 置于任何属性之前,使其仅在 XAML 设计器中显示,而不在运行时显示。

例如,可将文本添加到通常绑定了数据的 TextBlock。

UWP 在XAML设计器中使用设计时数据

在此示例中,如果没有 d:Text,则 XAML 设计器对于 TextBlock 不显示任何内容。 而是显示”Name!”, 在此情况下,TextBlock 在运行时将具有实际数据。

除了将d:与控件的属性结合之外,你也可将 d: 与任何 UWP 或 WPF .NET Core 控件结合使用。 即将其添加到控件本身。

        <d:TextBox
           Text="20 - 起床 (1/1)"/>

UWP 在XAML设计器中使用设计时数据

UWP 在XAML设计器中使用设计时数据

在此示例中,按钮仅在设计时显示。 使用此方法可为自定义控件放置占位符,或者可试用不同的控件。 在运行时期间,所有 d: 特性和控件都将被忽略。

4. 在设计时预览图象

可为绑定到页面或动态加载的图像设置设计时源。 将要在 XAML 设计器中显示的图像添加到项目中。 然后,可在设计时在 XAML 设计器中显示该图像:

"DesignTimePicture.jpg" />

5. ListView的设计时数据

ListView 是一种在桌面应用中显示数据的常用方法。 但是,如果没有任何数据,ListView 就难以进行可视化。 可使用此功能创建内联设计时数据 ItemSource。 XAML 设计器在设计时在 ListView 中显示该数组中的内容。

"{Binding Items}" VerticalAlignment="Bottom">

                One
                Two
                Three

                    "{Binding ItemName}" d:Text="{Binding .}" />

上一个示例显示了在 XAML 设计器中具有三个 TextBlock 的 ListView。

你也可以创建一个数据对象数组。 例如,可将 City 数据对象的公共属性构建为设计时数据。

public class City
    {
        public string Name { get; set; }
        public string Country { get; set; }
    }
"{Binding Items}" VerticalAlignment="Bottom">

                "NewYork" Country="America"/>
                "Tokyo" Country="Japan"/>
                "Guangzhou" Country="China"/>

                "local:City">
                    "Horizontal">
                        "{Binding Name}" Margin="0,0,10,0" />
                        "{Binding Country}" />

UWP 在XAML设计器中使用设计时数据

这样做的好处是,你可将控件绑定到模型的设计时静态版本。

本项目演示用的Xbox示例,已经托管到Github,https://github.com/hupo376787/XboxAchievements

参考:https://docs.microsoft.com/zh-cn/visualstudio/xaml-tools/xaml-designtime-data?view=vs-2019

Original: https://www.cnblogs.com/hupo376787/p/13832671.html
Author: 猫叔Vincent
Title: UWP 在XAML设计器中使用设计时数据

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607080/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • WSL2+Docker+IDEA一站式开发调试

    WSL2+Docker+IDEA一站式开发调试 前言 ​ 我们知道,Docker是一个容器引擎;对于开发者来说,使用Dokcer容器部署各种开发需要的中间件(比如myql、redi…

    Linux 2023年6月7日
    0101
  • JS 模块化- 04 CMD 规范与 Sea JS

    1 CMD 规范介绍 CMD: Common Module Definition, 通用模块定义。与 AMD 规范类似,也是用于浏览器端,异步加载模块,一个文件就是一个模块,当模块…

    Linux 2023年6月6日
    098
  • ​探秘 Web 水印技术

    Web 水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印),本文将分别予以介绍,带你探秘…

    Linux 2023年6月8日
    0108
  • 实验一-密码引擎-商用密码算法实现2-交叉测试(选做)

    任务详情 把自己实现的商用密码算法SM2,SM3,SM4与OpenSSL交叉验证 自己实现的SM3算法的结果与OpenSSL的结果比对是否一致 自己实现的SM4算法加密的,Open…

    Linux 2023年6月8日
    0104
  • Kafka 配置文件详情

    kafka的配置分为 broker、producter、consumer三个不同的配置 一 、BROKER 的全局配置 最为核心的三个配置 broker.id、log.dir、zo…

    Linux 2023年6月8日
    078
  • 大华海康NVR录像JAVA下载及WEB播放

    近期在处理一个将NVR录像机上的录像下载到服务器并通过浏览器播放的需求。 梳理记录下过程,做个备忘,同时遇到的一些细节问题解决,也供需要的同学参考。 需求比较简单,就是把指定时间段…

    Linux 2023年6月13日
    0137
  • 关于如何在window下执行SQLSERVER的定时备份

    引言 在使用SqlServer Express 版本的时候发现,这个版本不支持通过数据库的代理方式进行数据库的维护。 解决方案 使用SQL语句加windows任务计划的方式解决具体…

    Linux 2023年6月14日
    088
  • docker:alpine使用logrotate切割日志

    最近在交付项目的时候使用了docker,大家都知道日志是项目定位问题的重要依据,但如果一开始项目本身没有对日志进行合理切割那就会导致长时间运行的项目日志文件大得编辑器打不开的情况。…

    Linux 2023年6月13日
    091
  • linux命令之查找grep

    grep(全称:Global Regular Expression Print)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来。它的使用权限是所有用户…

    Linux 2023年5月27日
    092
  • podman对容器映像签名和分发

    熟悉podman 如何使用 Podman 对容器映像进行签名和分发 熟悉podman 此示例容器将运行一个非常基本的 httpd 服务器,该服务器仅为其索引页提供服务 [root@…

    Linux 2023年6月7日
    092
  • PHP array_reduce()

    array_reduce array_reduce() 将回调函数 callback 迭代地作用到 array 数组中的每一个单元中,从而将数组简化为单一的值。 示例一: 示例二:…

    Linux 2023年6月7日
    0101
  • OpenStack cinder对接glusterfs存储

    一、创建虚拟机node1 自定义默认下一步稍后安装操作系统选择Linux,红帽6名称位置随意1核就行2G内存就行仅主机网络默认下一步默认下一步默认下一步30G,给单个文件添加一块5…

    Linux 2023年6月8日
    080
  • ABCD四个顺序执行方法,拓展性延申

    今天在群里,有人问 &#x6709;&#x51E0;&#x4E2A;void&#x8FD4;&#x56DE;&#x503C;&amp…

    Linux 2023年6月7日
    0115
  • LeetCode-459. 重复的子字符串

    题目来源 题目详情 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s = “abab”输出: true解释:…

    Linux 2023年6月7日
    0110
  • apk自签证书

    需要用到keytool.exe (位于D:\Program Files\Java\jdk1.8.0_291\jre\bin目录下),使用产生的key对apk签名用到的是jarsig…

    Linux 2023年6月8日
    091
  • Pytorch Tensor 维度的扩充和压缩

    维度扩展 x.unsqueeze(n) 在 n 号位置添加 一个维度 例子: import torch x = torch.rand(3,2) x1 = x.unsqueeze(0…

    Linux 2023年6月7日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球