【问题标题】:Visualize object properties in a WPF control可视化 WPF 控件中的对象属性
【发布时间】:2013-07-31 04:08:15
【问题描述】:

是否可以可视化对象(其属性及其值)并将其打印出来(转储 - 类似于序列化)到 WPF 控件,例如 TreeView 或 PropertyGrid 以检查对象?

目标是显示任意对象的内容(不仅用于调试目的)。

进一步澄清:我不是在寻找任何调试工具或显示 WPF 可视化树的方法。这个问题只与 WPF 部分有关 -> WPF 只是显示对象转储的媒体,因为 WPF 和 WinForms 之间的控件可能有所不同。

嵌套对象实例、列表等的输出应该是分层的。

【问题讨论】:

标签: c# .net wpf object properties


【解决方案1】:

几个月来我一直在寻找这个问题的答案;由于线程所有权违规,Snoop、Spy 和所有其他方法都不适用于我。

Microsoft 有一个 Windows 工具,可让您选择任何正在运行的 UI 元素并查看该元素的可访问性数据:

inspect.exe

https://msdn.microsoft.com/en-us/library/dd318521(VS.85).aspx

在需要下载安装的windows软件开发包中有,位于:

C:\Program Files\x86\(win-version)\bin\(cpu-architecture)\inspect.exe

【讨论】:

    【解决方案2】:

    您的意思是除了 WPF Tree Visualizer 之外?还有Mole,已经不是免费的了,但是很好。

    编辑:

    阅读您编辑的问题。您明确命名了 PropertyGrid,我认为您已经尝试过 Extended WPF Toolkit's PropertyGrid

    【讨论】:

    • 不幸的是,这与我的问题无关。我不清楚详细说明我到底想要什么 - 请参阅我的编辑。 :)
    • 编辑了我的答案,看看是不是你要找的。​​span>
    【解决方案3】:

    现有的各种控件可让您以属性网格的形式查看属性。

    http://www.codeproject.com/Articles/87715/Native-WPF-4-PropertyGrid

    https://wpftoolkit.codeplex.com/wikipage?title=PropertyGrid

    https://wpg.codeplex.com/

    根据它们提供的复杂性、许可证和功能,您必须选择一个,它们都是免费的。

    【讨论】:

      【解决方案4】:

      因此,您需要一个在运行时显示类字段的控件。通过查找“属性网格”,您会发现很多关于此的文章。它不是你想要的,而是一个开始。您基本上通过反射对类的字段进行迭代,并将它们显示在 ListView/TreeView 中。但是,这是开始的困难部分,确定要显示和隐藏哪些字段,处理非常不同的类型和基元并允许通过类型转换(如字符串到 Rect、点、颜色等)来编辑它们是一个非常复杂的事情。 This control 可能会给你一个很好的起点。

      【讨论】:

        【解决方案5】:

        我觉得你应该看看Snoop

        此程序将允许您浏览任何正在运行的应用程序的 WPF 树。此工具不需要调试,并且该工具可能不适用于调试。通常我在非调试场景中使用它来查看我的 WPF 控件的实际布局以及它们对各种属性的值是什么

        【讨论】:

        • 不幸的是,这与我的问题无关。我不清楚详细说明我到底想要什么 - 请参阅我的编辑。 :)
        【解决方案6】:

        我相信您正在寻找的是System.Diagnostics.DebuggerDisplayAttribute

        【讨论】:

        • 这对于将对象内容总结为一行很有用,但对于创建分层视图通常很差。我认为类似于可视化器的东西会是更合适的调试工具
        • 不幸的是,这与我的问题无关。我不清楚详细说明我到底想要什么 - 请参阅我的编辑。 :)
        猜你喜欢
        • 2011-03-24
        • 2018-12-07
        • 2023-01-23
        • 1970-01-01
        • 1970-01-01
        • 2012-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多