Есть ли способ представить интерфейсProperty как выбивку вариантов, которые позволили бы мне изменить тип, который там хранится, не прибегая к проводке, что все в коде позади?
Возможно, в зависимости от того, что вы на самом деле хотите сделать. Если вы просто хотите привязать коллекцию существующих объектов к ComboBox
в качестве параметров выбора, это должно работать нормально. Но, очевидно, в этом случае, если вы используете этот интерфейс с несколькими экземплярами вашего типа ViewModel
, каждый экземпляр будет иметь тот же объект ISomeInterface
для данного типа реализации. Это может быть или не быть приемлемым.
Если вы хотите, чтобы автоматически обнаруживать все доступные реализаций ISomeInterface
и заселить ComboBox
с самими типами, создавая новый экземпляр для ViewModel
каждый раз, когда выбранные изменения реализации, то нет и hellip; что будет требовать код-позади.
Если вам нужны уникальные экземпляры объектов, но все в порядке с указанием опций вручную, вы можете сделать это, например. набор делегатов фабрики или реализация IValueConverter
(например, для преобразования значения string
или Type
из ComboBox
в новый экземпляр желаемого типа).
К сожалению, ваш вопрос освещен в требованиях, поэтому трудно понять, что сработает для вас. Есть много вариантов, и перечисление их всех будет «слишком широким» для переполнения стека.
Я также хотел бы показать некоторые текстовые поля данных для настройки различных свойств в выбранном типе, которые будут меняться при изменении типа, возможно ли это?
Несомненно. Просто объявите соответствующие ресурсы для разных типов, которые вы хотите обработать, и используйте ContentPresenter
с Content
, связанными с экземпляром типа, который вы хотите отобразить.
Reflection позаботится о поле со списком, просто заполните коллекцию на основе результатов. Что касается создания экземпляров через пользовательский интерфейс, вы можете использовать селектор шаблонов данных на основе фактического типа свойства. У меня нет кода, поэтому я предлагаю это как комментарий как возможный указатель. – kidshaw
Вы хотите, чтобы вы выбрали поле со списком, которое позволит вам выбрать, какой экземпляр класса (сформировать все классы, реализующие интерфейс), хранится в свойстве? – ZivS
@ ZivS Да, в значительной степени это точно. Теперь, когда я думаю об этом, я мог бы иметь список классов ISomeInterface, которые он привязал к combobox. – Patrick