win10 uwp 使用 XamlTreeDump 获取 XAML 树元素内容
本文来安利大家 XamlTreeDump 库,通过这个库可以将 XAML 树上的元素转换为 json 字符串,可以用来进行 UI 单元测试
开始之前先通过 NuGet 工具安装 XamlTreeDump 库

假定咱有 UI 界面代码如下
<page x:class="WholebaycarNowawnawka.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:WholebaycarNowawnawka" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:ignorable="d" background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<grid>
<textblock>欢迎访问我博客 https://blog.lindexi.com 里面有大量 UWP WPF 博客</textblock>
</grid>
</page>
可以在后台代码使用 VisualTreeDumper.DumpTree 方法获取 json 字符串
public MainPage()
{
InitializeComponent();
Loaded += MainPage_Loaded;
}
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var xaml = VisualTreeDumper.DumpTree(this, null, Array.Empty<string>(), new AttachedProperty[0]);
}
上面代码拿到的 xaml 字符串如下
{
"XamlType": "WholebaycarNowawnawka.MainPage",
"Background": "#FFFFFFFF",
"BorderBrush": null,
"BorderThickness": "0,0,0,0",
"Clip": null,
"CornerRadius": "0,0,0,0",
"FlowDirection": "LeftToRight",
"Foreground": "#FF000000",
"HorizontalAlignment": "Stretch",
"Margin": "0,0,0,0",
"Padding": "0,0,0,0",
"RenderSize": [1200, 900],
"VerticalAlignment": "Stretch",
"Visibility": "Visible",
"children":
[
{
"XamlType": "Windows.UI.Xaml.Controls.Grid",
"Background": null,
"BorderBrush": null,
"BorderThickness": "0,0,0,0",
"Clip": null,
"CornerRadius": "0,0,0,0",
"FlowDirection": "LeftToRight",
"HorizontalAlignment": "Stretch",
"Margin": "0,0,0,0",
"Padding": "0,0,0,0",
"RenderSize": [1200, 900],
"VerticalAlignment": "Stretch",
"Visibility": "Visible",
"children":
[
{
"XamlType": "Windows.UI.Xaml.Controls.TextBlock",
"Clip": null,
"FlowDirection": "LeftToRight",
"Foreground": "#FF000000",
"HorizontalAlignment": "Stretch",
"Margin": "0,0,0,0",
"Padding": "0,0,0,0",
"RenderSize": [1200, 900],
"Text": "欢迎访问我博客 https://blog.lindexi.com 里面有大量 UWP WPF 博客",
"VerticalAlignment": "Stretch",
"Visibility": "Visible"
}
]
}
]
}
本文所有代码放在 github 和 gitee 欢迎小伙伴访问
win10 uwp 使用 XamlTreeDump 获取 XAML 树元素内容的更多相关文章
- win10 uwp 弹起键盘不隐藏界面元素
本文主要讲,在我们使用手机输入的时候,会因为手机的虚拟键盘隐藏了一些界面的元素.我们有一个简单的方法让虚拟键盘不隐藏界面元素. 我们需要的界面元素是在显示了虚拟键盘后的空间能全部显示,如果不能的话,还 ...
- win10 uwp 从StorageFile获取文件大小
本文主要:获取文件大小 private async Task<ulong> FileSize(Windows.Storage.StorageFile file) { var size = ...
- win10 uwp 入门
UWP是什么我在这里就不说,本文主要是介绍如何入门UWP,也是合并我写的博客. 关于UWP介绍可以参见:http://lib.csdn.net/article/csharp/32451 首先需要申请一 ...
- Win10/UWP新特性—Drag&Drop 拖出元素到其他App
在以前的文章中,写过微软新特性Drag&Drop,当时可能由于处于Win10预览版,使用的VS也是预览版,只实现了从桌面拖拽文件到UWP App中,没能实现从UWP拖拽元素到Desktop A ...
- win10 uwp 获得元素绝对坐标
有时候需要获得一个元素,相对窗口的坐标,在修改他的位置可以使用. 那么 UWP 如何获得元素坐标? 我提供了一个方法,可以获得元素的坐标. 首先需要获得元素,如果没有获得元素,那么如何得到他的坐标? ...
- win10 UWP 等级控件Building a UWP Rating Control using XAML and the Composition API | XAML Brewer, by Diederik Krols
原文:Building a UWP Rating Control using XAML and the Composition API | XAML Brewer, by Diederik Krols ...
- win10 uwp 列表模板选择器
本文主要讲ListView等列表可以根据内容不同,使用不同模板的列表模板选择器,DataTemplateSelector. 如果在 UWP 需要定义某些列的显示和其他列不同,或者某些行的显示和其他行不 ...
- win10 uwp DataContext
本文告诉大家DataContext的多种绑法. 适合于WPF的绑定和UWP的绑定. 我告诉大家很多个方法,所有的方法都有自己的优点和缺点,可以依靠自己喜欢的用法使用.当然,可以在新手面前秀下,一个页面 ...
- win10 uwp MVVM 轻量框架
如果在开发过程,遇到多个页面之间,需要传输信息,那么可能遇到设计的问题.如果因为一个页面内包含多个子页面和多个子页面之间的通信问题找不到一个好的解决方法,那么请看本文.如果因为ViewModel代码越 ...
- win10 UWP 剪贴板 Clipboard
win10 UWP 剪贴板 Clipboard使用Windows.ApplicationModel.DataTransfer.Clipboard 设置文本 DataPackage dataPackag ...
随机推荐
- 记录--vue3+setup+ts 知识总结
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 vue3 于 2020 年 09 月 18 日正式发布,2022 年 2 月 7 日 vue3 成为新的默认版本 距离 vue3 正式发布 ...
- 记录--有关CSS盒模型之内边距、边框、外边距的十九问题
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本篇文章主要探讨盒模型,以及内边距.边框.外边距的面试题与思考,也希望您能把您的思考和遇到的问题以评论的方式补充下,后期,我将会补充到文章 ...
- .Net MinimalApis响应返回值
前言 文本主要讲 MinimalApis 中的使用自定义IResultModel和系统自带IResult做响应返回值. MinimalApis支持以下类型的返回值: string - 这包括 Task ...
- Eagle+欧奥PicHome创建私有的pinterest网站
Pinterest和花瓣网, 是设计师寻找灵感的天堂!它能够帮你采集.存储和发现灵感.可以说是设计师必用的网站. Eagle是设计师个人的灵感收集工具,它能够方便的采集素材,并快速为图片标签,分类,评 ...
- Involution:空间不共享?可完全替代卷积的高性能算子 | CVPR 2021
其实这篇文章很早就写好了,但作者其它论文涉及到洗稿问题,所以先放着了.目前看这篇文章没被举报有洗稿的嫌疑,所以就发出来了 . 来源:晓飞的算法工程笔记 公众号 论文: Involution: Inve ...
- 首届OpenHarmony竞赛训练营结营颁奖,75所高校学子助力建设开源生态
由OpenAtom OpenHarmony(以下简称"OpenHarmony")项目群工作委员会和OpenHarmony项目群技术指导委员会主办的首届OpenHarmony竞赛 ...
- 如何实现OpenHarmony的OTA升级
OTA简介 随着设备系统日新月异,用户如何及时获取系统的更新,体验新版本带来的新的体验,以及提升系统的稳定性和安全性成为了每个厂商都面临的严峻问题.OTA(Over the Air)提供对设备远程升级 ...
- C++ While 和 For 循环:流程控制全解析
C++ Switch 语句 使用 switch 语句选择要执行的多个代码块之一. 语法 switch(expression) { case x: // 代码块 break; case y: // 代码 ...
- 【FAQ】视频编辑服务常见问题及解答
Q1问题描述 1. 访问贴纸等素材的时候提示"网络异常,请重试"怎么办? 2. 使用AI能力时,提示"errorCode:20124 errorMsg:Method no ...
- 民生直销银行终端安全修炼秘籍之HMS Core两大安全能力
在金融行业数字化转型浪潮下,传统商业银行先后推出手机银行.直销银行等移动金融客户端.作为民生银行"数字金融"的试验田,民生直销银行始终秉承"简单的银行"发展理念 ...