【发布时间】:2009-06-18 03:18:10
【问题描述】:
我目前希望使用 PropertyGrid 来允许用户编辑我的一些类,但是我遇到了将对象传递给他们使用的 UITypeEditor 的问题。当用户按下下拉菜单时,我想显示一个已加载纹理的列表框以供选择,如果他们想使用应用程序尚未加载的纹理,他们可以单击按钮从文件对话框中选择一个。如果我在这里没有任何意义,请模拟以下形式:
.
我的问题:要填充列表框,我需要访问管理 UITypeEditor 资源列表的类。
现在我已经为我自己的类解决了这个问题,方法是在创建时为它们的管理对象提供参考。然后,在 UITypeEditor 中,我使用该引用来访问我需要的内容。但是对于我没有编写的类,例如 XNA Texture2D 类,我不能这样做。
这是我使用的类的样子:
class StaticGeometryChunk
{
// Geometry data to draw with. Contains a reference to its managing
// class for use in its UITypeEditor.
public GeometryData { get; set; }
....
}
class Material
{
// These are XNA classes. I can't just add a reference to its managing
// class (I think?).
public Texture2D Texture1 { get; set; }
public Texture2D Texture2 { get; set; }
....
}
我一直在研究我的选择,它们似乎是:
- 将管理类设为静态。
我真的不想这样做。由于每种资源的加载方式不同,因此有几个管理类。还有一些类需要在这些之前创建并传入。
- 将管理类设为单例。
我也不想这样做。这似乎是一种“隐藏”问题而不是“解决”问题的快速而肮脏的方式。我可能还希望将来有几个管理类,单例会消除这些选项。
- 创建一个包含对管理类及其目标(例如 XNA Texture2D)的引用的包装类。
这是我目前正在考虑做的事情。这样做会非常简单快捷,但有些事情让我烦恼,但我不知道是什么。
对于将我需要的内容传递到 UITypeEditor 的上述方法或其他方法有什么想法吗?
感谢您的阅读。
【问题讨论】:
标签: c# propertygrid uitypeeditor