Динамические дочерние пользовательские элементы управления MVVM - PullRequest
1 голос
/ 09 июля 2011

У меня есть пользовательский элемент управления на странице, и я хотел бы загрузить другой пользовательский элемент управления в его сетке.Однако я хочу, чтобы тип пользовательского элемента управления был динамическим - например, если выбрать «Калькулятор» из раскрывающегося списка, отобразится мой пользовательский элемент управления калькулятора, а при выборе «Конвертер валют» будет загружен мой конвертер валют.Кто-нибудь может помочь?

Кстати, я пытаюсь придерживаться MVVM.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 09 июля 2011

Одним из способов является определение нескольких DataTemplates по одному для каждого ребенка.Когда пользователь выбирает опцию, установите соответствующий ViewModel в ContentControl's DataContext, присутствующий в родительском представлении, и framework выберет соответствующее представление для вас.

0 голосов
/ 29 ноября 2011

Джон Папа написал отличный пост в блоге о том, как именно это сделать здесь .

Основная стратегия заключается в создании нового экземпляра класса, производного от UserControl, когда он выбран из выпадающего списка.

Другими словами, событие SelectionChanged выпадающего списка может быть обработано, и новый объект UserControl может быть создан на основе выбранного элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...