В настоящее время я надеюсь использовать 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?
Спасибо за чтение.