在WPF控件中可视化对象属性

6
能否将一个对象(包括其属性及其值)可视化并打印出来(转储 - 类似于序列化),以便在 WPF 控件(例如 TreeView 或 PropertyGrid)中检查该对象?
目标是显示任意对象的内容(不仅仅用于调试目的)。
进一步澄清:我不是在寻找任何调试工具或显示 WPF 可视树的方法。这个问题只与 WPF 有部分关系 -》 WPF 只是显示对象转储的媒介,因为控件可能在 WPF 和 WinForms 之间变化。
输出应为嵌套对象实例、列表等的分层结构。

可能是重复问题 (http://stackoverflow.com/q/38642/1817791) - makc
你是否正在寻找一个 WPF 版本的属性网格? - Emond
6个回答

5

我认为你应该看看Snoop

这个程序可以让您浏览任何正在运行的应用程序的WPF树。使用此工具不需要调试,可能该工具不适用于调试。通常我在非调试场景下使用它来查看我的WPF控件实际布局以及各种属性的值。


很遗憾,这与我的问题无关。我在阐述我想要的内容方面不够清晰 - 请查看我的编辑。 :) - Atrotygma

2

1
这对于将对象内容总结为一行非常有用,但通常不适合创建分层视图。我认为类似可视化工具的东西会是更合适的调试工具。 - JaredPar
很遗憾,这与我的问题无关。我在阐述我想要的内容方面不够清晰 - 请查看我的编辑。 :) - Atrotygma

2
除了WPF树形可视化器之外,还有Mole,它不再免费,但非常好用。
编辑:
阅读您编辑后的问题。您明确命名了PropertyGrid,我想您已经尝试过扩展WPF工具包的PropertyGrid了吗?

很遗憾,这与我的问题无关。我在阐述我想要的内容方面不够清晰 - 请查看我的编辑。 :) - Atrotygma
修改了我的回答,请看看是否符合您的要求。 - SoManyGoblins

0

我已经寻找这个答案好几个月了;Snoop、Spy和其他工具都无法使用,因为存在线程所有权违规。

微软有一个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

0

所以你想要一个在运行时显示类的字段的控件。通过搜索“属性网格”,你会找到很多相关文章。虽然它不是直接符合你的需求,但这是一个好的开始。你需要通过反射迭代类的字段,并在ListView/TreeView中显示它们。但是,困难的部分在于确定哪些字段应该显示和隐藏,处理非常不同的类型和基元,并允许使用类型转换进行编辑(例如将字符串转换为Rect、point、color等),这是一个非常复杂的问题。 这个控件可能会给你一个很好的起点。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接