如何在Visual Studio 2010中创建一个自定义图像装饰插件,用于数字数组?

7
我使用很多浮点图像,并且希望有一个基于图像的数组表示方式,这将非常有用。我想创建一个WPF UserControl,将数据数组(如下所示)呈现为图像,而不是可滚动的文本值列表。
这可能吗?我查看了VS 2010扩展性的MDSN文档,SO的VS 2010扩展列表以及此主题上关于创建自定义编辑器的内容,但我不知道从哪里开始。

alt text

更新1:

感谢Brian和Basarat Ali提供的DebuggerVisualizer线索。看起来是正确的策略,但不幸的是,任何类型的数组都被禁止进行可视化。

一个(有限的)解决方法是可视化一个包装对象。

根据Brian的建议,我已经在CodePlex上发布了一个解决方案:

VS2010 Debugger Visualizers Contrib (http://debuggervisualizers.codeplex.com/)。

该项目的源代码演示了一个工作包装器可视化器和一个对于1D double[]数组无法正常运行的“原始”数据可视化器。这是测试控制台运行的屏幕截图:

alt text

如果有人对如何解决这个问题有建议,请告诉我!

同时,任何关于为什么 System.Array 无法可视化的解释都是受欢迎的!

更新2:

我刚刚用 DebuggerVisualizer 进行了搜索,并发现这个问题之前已经被问过了(以前问过)。看起来用户 Will Dean 建议使用 Project Mole 的解决方法 (使用 WeakReference)。不过我不知道这在 DebuggerVisualizer 中会怎样工作。

更新3:

Josh Smith(来自 Project Mole)刚刚提出了一个非常有用的解决方法(感谢 Josh!):

注意,您可以使用ArrayWrapper方法,而无需修改源代码以打开可视化工具。您可以在VS的Watch窗口中输入以下内容:

new YourNamespace.ArrayWrapper(myArray);

按Enter键,然后您应该在该行代码旁边的Watch窗口中看到放大镜图标。单击它以打开您的自定义可视化工具。

2个回答

2

谢谢!看到我的更新 - 看起来 System.Array 是不允许的。 - lightw8
只是更新一下,感谢您关于导出的建议,但我真的想要一个能够实时可视化的解决方案。 - lightw8
看起来 DebuggerVisualizer 是正确的选择。对于本地数组,请参见我的更新#3中使用 VS 中的 Watch 窗口的解决方法。 - lightw8

0

由于这是调试器中的运行时信息,您可能会考虑使用DebuggerVisualizer而不是编辑器扩展。有一些权衡,我不确定哪种最适合这种情况。

(无论如何,我认为这是可能的,看起来很有用,我希望有人在闲暇的周末编写并发布源代码。)


谢谢!看到我的更新 - 看起来 System.Array 是不允许的。CodeProject 网站是可以使用的! :) - lightw8

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