C# Avalonia 17- ControlTemplates - VisualTreeDisplay

news/2025/11/11 15:11:17/文章来源:https://www.cnblogs.com/dalgleish/p/19210417

VisualTreeDisplay.axaml代码

<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Height="620" Width="480"x:Class="AvaloniaUI.VisualTreeDisplay"Title="VisualTreeDisplay"><TreeView Name="treeElements" Margin="10"></TreeView>
</Window>

VisualTreeDisplay.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.VisualTree;namespace AvaloniaUI;public partial class VisualTreeDisplay : Window
{public VisualTreeDisplay(){InitializeComponent();// 当窗口完全加载后,显示自身的可视树this.Opened += (_, _) => ShowVisualTree(this);}public void ShowVisualTree(Visual element){treeElements.Items.Clear();ProcessElement(element, null);}private void ProcessElement(Visual element, TreeViewItem? parent){// 构造标题:类型 + 控件名(如果有)string? name = (element as Control)?.Name;string header = string.IsNullOrEmpty(name)? element.GetType().Name: $"{element.GetType().Name} ({name})";var item = new TreeViewItem{Header = header,IsExpanded = true,  // 默认全部展开Tag = element       // 可选:保存引用以供后续扩展};if (parent == null)treeElements.Items.Add(item);elseparent.Items.Add(item);// 遍历可视子节点foreach (var child in element.GetVisualChildren()){if (child is Visual v)ProcessElement(v, item);}}
}

运行效果

image

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/962452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件测试】你需要的面试技巧全在这里,细节满满

小编总结了面试的细节,这份热乎乎、滚滚烫的面经分享给大家,希望对大家有所帮助。 面试形式 问题式 由招聘者按照事先拟订的提纲对求职者进行发问,请予回答。其目的在于观察求职者在特殊环境中的表现,考核其知识与…

Q:访问url地址,nginx报错 403 Forbidden

Q:访问url地址,nginx报错 403 ForbiddenPosted on 2025-11-11 15:08 三年三班王小朋 阅读(0) 评论(0) 收藏 举报403 Forbidden,说明 后端服务(ip:端口)拒绝了该请求,而不是 Nginx 的问题(因为这是直接访问…

非模式生物基因富集分析——小麦富集分析

TriticeaeGeneTribe - A homology database for Triticeae tribe (wheat, durum wheat, barley, and their relatives) 1、模式生物与非模式生物小麦属于作物模式生物2、富集分析 对于非常规生物的富集分析,有些R包没…

【MySQL】事务 - 详解

【MySQL】事务 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

2025年井式炉直销厂家权威推荐榜单:节能工业炉/退火井式炉/大型井式炉源头厂家精选

在工业热处理领域,井式炉因其独特的立式深井结构,在处理长轴类、棒材等细长工件时具有天然优势,能有效控制工件变形,保证性能稳定。随着制造业持续升级,节能高效、智能控温已成为井式炉发展的核心方向。为帮助您精…

2025年优质的数字化配电柜厂家推荐及选择参考

2025年优质的数字化配电柜厂家推荐及选择参考行业背景与市场趋势随着"双碳"目标的持续推进和新型电力系统建设的加速,数字化配电柜作为智能电网的关键设备,正迎来前所未有的发展机遇。根据中国电力企业联合…

基于AI辅助的Java程序设计贯穿式教学案例

基于AI辅助的Java程序设计贯穿式教学案例基于AI辅助的Java程序设计贯穿式教学案例 目录基于AI辅助的Java程序设计贯穿式教学案例教学目标思路案例相关git仓库实施方案一、初步导入:简单MIS系统二、面向对象深入学习三…

学习CANN总体架构

各层级术语 (部分可能不准确,仅供参考)昇腾计算语言 = AscendCL = Ascend Computing Language ≈ 各种开发算子开发 图开发 应用开发昇腾计算服务层 = Ascend Computing Service Layer昇腾算子库 = AOL = Ascend Op…

2025年防爆加热管优质厂家权威推荐榜单:防爆电加热棒/防爆电热管/防爆电加热管源头厂家精选。

在石油化工、矿山开采、危险品储存等特殊工业环境中,防爆加热管作为关键的热能设备,其安全性能直接关系到工业生产安全。据行业数据显示,2025年中国防爆电加热器市场规模预计达到78亿元,年均增长率保持在9.5%。为帮…

2025龙信杯

1. 分析手机镜像,请问机身的Wi-Fi信号源的物理地址是什么?[标准格式:01:02:03:04:05:06]结果为00:db:60:6e:86:13 2. 分析手机镜像,请问张大的手机号码尾号是3807的手机号码是多少?[标准格式:15599005009] 直接搜…

技术面:SpringCloud(SpringCloud有哪些组件,SpringCloud与Dubbo的区别)

SpringCloud有哪些组件?SpringCloud与Dubbo有什么区别?什么是SpringCloud Spring Cloud 是一个基于 Spring Framework 的开源微服务架构工具集,用于简化和快速构建分布式系统。它提供了一套完整的微服务解决方案,基…

2025年不锈钢四方管制造企业权威推荐榜单:无缝不锈钢方管/拉丝不锈钢方管/不锈钢抛光方管源头厂家精选

在当今工业与建筑领域,不锈钢四方管因其优异的耐腐蚀性、高强度和美观性,已成为众多工程项目不可或缺的核心材料。市场数据显示,不锈钢方管的需求近年来持续增长,广泛应用于建筑装饰、市政工程、机械制造、石油化工…

Consul(服务全生命周期治) 单节点部署测试以及脚本制作示例(v1.21.2)

Consul(服务全生命周期治) 单节点部署测试以及脚本制作示例(v1.21.2)本文介绍了 HashiCorp 开发的开源工具 Consul,其定位为服务网格与服务治理工具,核心解决分布式系统中服务发现、配置同步、流量安全管控问题。文…

详细介绍:【NestJS】NestJS三件套:校验、转换与文档生成,对比Django DRF

详细介绍:【NestJS】NestJS三件套:校验、转换与文档生成,对比Django DRFpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

java+vue+SpringBoot网上点餐架构(脚本+数据库+报告+部署教程+答辩指导)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …