Передача объектов к UITypeEditor

Это изменение довольно хорошо описано в этом сообщении в блоге и на странице совместимости .

Обратите внимание, что вы можете вернуться к старому поведению, установив системное свойство sun.locale.formatasdefault на true.

5
задан Spooky 19 June 2015 в 20:57
поделиться

2 ответа

В методе EditValue вам предоставляется контекст. Используйте context.Instance для доступа к объекту, содержащему ваше свойство. Этот объект также должен содержать свойство, которое дает вам доступ к списку вещей, которые вы хотите отобразить. Вы можете проверить, например, является ли context.Instance ITextureProvider, затем применить его и получить доступ к текстурам. Не уверен, что это имеет смысл в вашем дизайне, но дайте мне знать.

9
ответ дан 18 December 2019 в 14:50
поделиться

В качестве альтернативы вы можете попробовать следующий подход. Я считаю это очень элегантным, потому что не требует хранения списка доступных значений свойств в объекте. Поэтому, например, вы можете отображать один набор значений в одной форме, а другой набор - в другой.

  1. Создайте интерфейс IYourDataProviderService.
  2. Создайте реализацию IYourDataProviderService, которая знает, какие конкретные данные нужно предоставить.
  3. Создайте класс, реализующий ISite. В методе GetService () вернуть экземпляр класса, который реализует IYourDataProviderService, если параметр serviceType имеет значение typeof (IYourDataProviderService). Я оставил остальные методы ISite, генерирующие NotImplementedException (кроме свойства DesignMode), и для меня это сработало, но, вероятно, это не идеальное решение.
  4. В обработчике события «Load» назначьте вашу реализацию свойству Site вашей propertygrid.
  5. Наслаждайтесь!
4
ответ дан 18 December 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: