首页 > 其他分享 >逻辑树(LogicTree)和可视化树(VisualTree)

逻辑树(LogicTree)和可视化树(VisualTree)

时间:2023-09-26 21:56:23浏览次数:34  
标签:frameworkElement container LogicTree int FrameworkElement num 可视化 sb VisualTree

遍历逻辑树和可视化树

FrameworkElement Level.(FrameworkElement Type).(FrameworkElement Name) [DataContext Type]

public static class TreeHelper
{
   public static string getTree(FrameworkElement container)
    {
        StringBuilder sb = new StringBuilder();
        sb.AppendLine("********Logical Tree********");
        getLogicalChildren(container, sb, 0);
        sb.AppendLine();

        sb.AppendLine("********Visual Tree********");
        getVisualChildren(container, sb, 0);
        sb.AppendLine();

        return sb.ToString();
    }

    private static void appendLine(FrameworkElement frameworkElement, StringBuilder sb, int num)
    {
        sb.Append("".PadLeft(num));

        string name = $"({frameworkElement.GetType().Name})";
        name += $"({frameworkElement.Name})";
        name += $" [{(frameworkElement.DataContext ?? new object()).GetType().Name}]";

        sb.AppendLine($"{num}.{name}");
    }

    private static void getLogicalChildren(FrameworkElement container, StringBuilder sb, int num)
    {
        appendLine(container, sb, num); // 遍历逻辑树,对每个节点进行处理
        foreach (var child in LogicalTreeHelper.GetChildren(container))
        {
            FrameworkElement frameworkElement = child as FrameworkElement;
            if (frameworkElement != null)
            {
                getLogicalChildren(frameworkElement, sb, num + 1);
            }
        }
    }

    private static void getVisualChildren(FrameworkElement container, StringBuilder sb, int num)
    {
        appendLine(container, sb, num); // 遍历可视化树,对每个节点进行处理
        int count = VisualTreeHelper.GetChildrenCount(container);
        for (int i = 0; i < count; i++)
        {
            FrameworkElement frameworkElement = VisualTreeHelper.GetChild(container, i) as FrameworkElement;
            if (frameworkElement != null)
            {
                getVisualChildren(frameworkElement, sb, num + 1);
            }
        }
    }
}

标签:frameworkElement,container,LogicTree,int,FrameworkElement,num,可视化,sb,VisualTree
From: https://www.cnblogs.com/LiuwayLi/p/17731315.html

相关文章

  • 在写python数据可视化是遇到点问题,求帮助
       哪里写错了吗,还是有地方写落了,来个大佬帮我疑惑解答吧......
  • 视频融合平台EasyCVR如何使用视频监控系统搭建电商货物可视化追溯解决方案
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • 3分钟,免费制作一个炫酷实用的数据可视化大屏!
    ​在当前大数据时代背景下,数据已成为在工业革命中如同煤炭、石油一般宝贵的资源。但是由于数据越来越庞大、越来越复杂,导致数据的可读性也越来越低。因此,对数据可视化的需求也越来越高,需要解决的问题也越来越复杂,而山海鲸可视化正是为了满足这种需求而诞生的。免费且零代码的山海......
  • 实时数据驱动:可视化大屏的交互革命
    在当今数字化时代,数据和信息是企业成功的关键。可视化大屏已经成为各个行业中数据呈现和决策支持的重要工具。然而,随着技术的发展,用户对于数据可视化的期望也在不断演变。仅仅呈现数据已经不再足够,用户希望能够更深入地与数据互动,以获得更多洞察力。本文将深入探讨可视化大屏的交......
  • R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化|附代码数据
    全文链接:http://tecdat.cn/?p=30647最近我们被客户要求撰写关于GARCH的研究报告,包括一些图形和统计输出。从Engle在1982发表自回归条件异方差(ARCH)模型的论文以来,金融时间序列数据的波动性就倍受关注。同时,近几年又出现了研究股票市场的波动传递性多市场的多维广义自回归条件......
  • R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化|附代码数据
    全文链接:http://tecdat.cn/?p=32307原文出处:拓端数据部落公众号互联网时代,大量的新闻信息、网络交互、舆情信息以文本形式存储在数据库中,如何利用数据分析和文本挖掘的算法,将海量文本的价值挖掘出来,成为我们团队近期的一个研究方向,本案例就是我们的一个尝试。文本聚类其实也就......
  • pytorch(3-0) 可视化训练误差折线图有
     缺点必须手动点击下关闭才能刷新最新的图,起码不会阻塞训练过程     ###画图训练损失训练精度测试精度importmatplotlib.pyplotaspltimportthreadingimporttimeimportmatplotlib.animationasanimationclassAnimator:def__init__(self......
  • 使用json+echarts实现数据库数据的可视化
    因为我上次是使用的另外一种方法实现的可视化,对json了解的不够,所以来补充一下这一块的知识点1、新建一个SpringBoot项目2、添加依赖<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><d......
  • 如何在低代码平台中应用可视化编程
    可视化编程,亦即可视化程序设计:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序与结果的调整同步。可视化编程的理念来源于可视化技术,它指的是一种把计算机程序中的文本指令转换为用户可以完全理解和操作的图形化界面。传统上,用户通过文本编程来......
  • 对企业数据分析来说,使用数据可视化至关重要的几个原因?
    在当今信息时代,企业面临着大量的数据产生和积累。这些数据蕴含着巨大的价值,可以为企业提供深入洞察、支持决策以及发掘业务机会。然而,将这些庞大的数据转化为有意义的见解并进行决策,并不是一件容易的事情。这正是为什么数据可视化在企业数据分析中至关重要的原因之一。1.向日益......