6

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

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

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

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

对象可视化

4

6 回答 6

5

我认为你应该看看 Snoop

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

于 2013-07-30T20:29:00.420 回答
2

您的意思是除了 WPF Tree Visualizer 之外?有Mole,它不再免费,但非常好。

编辑:

阅读您编辑的问题。您明确命名了 PropertyGrid,我认为您已经尝试过扩展 WPF 工具包的 PropertyGrid吗?

于 2013-07-30T20:30:04.270 回答
2

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

于 2013-07-30T20:28:48.587 回答
0

有各种现有控件可让您将属性视为属性网格。

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

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

https://wpg.codeplex.com/

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

于 2013-07-31T10:49:32.213 回答
0

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

于 2013-07-31T10:39:15.803 回答
0

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

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

inspect.exe

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

它在需要下载和安装的 windows Software Development Kits 中可用,位于:

C:\Program Files\x86\(win-version)\bin\(cpu-architecture)\inspect.exe
于 2017-03-09T15:47:57.770 回答