【发布时间】:2015-10-08 08:19:26
【问题描述】:
背景
花了很多时间研究之后,我还没有找到任何方法可以将多个对象分配给PropertyGrid(扩展 WPF 工具包)。我的下一个想法是创建我自己的聚合器类,它接收选定的对象并将它们的 common 属性暴露给外部世界。然后我会将这个类(的一个实例)分配给PropertyGrid。用户在PropertyGrid 中所做的任何更改都将由聚合器类传递给选定的对象。
问题
框架中是否有任何内容(尤其是Reflection)可以帮助我完成这项任务?我域中的所有对象都继承自一个共同的祖先并添加它们自己的新属性(或覆盖祖先版本)。类层次结构有多个层次。
更新
对于和我遇到同样情况的其他人,我终于能够解决PropertyGrid 问题。解决方法见my other post。
【问题讨论】:
-
有了你想要的,你需要创建聚合器类 dynamically 。所以很难轻松完成(我们需要使用
System.Reflection.Emit)。事实上,如果我们生成类定义代码并使用System.CodeDom.Compiler和Microsoft.CSharp可能会更容易。我想知道你为什么想做那样的事情?如果您想在PropertyGrid中显示所有常见属性,我想您可以将其SelectedObjects(而不仅仅是SelectedObject)设置为您的对象数组。 -
好吧,我刚刚意识到你的意思是扩展工具包中的
PropertyGrid,看起来它不支持多对象选择。 -
@Hopeless:你的身份证比你的回答更让我害怕!
-
我猜你的问题的解决方案甚至会让你比我的身份证更害怕。
标签: c# .net wpf reflection