Проблема в том, что для создания динамического компонента, как я вижу.
Вы можете поместить объект-контейнер в представление, а затем в modelView создать UIElements и привязать эту коллекцию UIElement к свойству содержимого контейнера. Но я думаю, что это не очень хорошая практика. Этот подход нарушает разделение моделей и представлений. Поэтому вам нужно избегать динамического создания компонентов.
Подход MVVM немного отличается. Иногда заставляют нас использовать хитрости. Т.е. вместо использования свойства MemberPath в ListBox вы определяете ItemTemplate и помещаете элементы ButtonBase в шаблон для поддержки Commanding! Или вы расширяете ListBox и команду поддержки.
Мое предложение вместо создания динамического объекта. Используйте DataTemplates и измените связанные элементы в ModelView, тогда представление будет автоматически создано для вас. Для сложных senario это может быть сложно. Мы делаем все это ради сохранения структуры MVVM.