У меня есть класс Wizard, который создает мастера со страницами, определенными в том же проекте.PageViewModel отделена от PageView.PageViewModel - это обычный класс C #, производный от абстрактного класса PageViewModelBase, а PageView - это UserControl.Чтобы определить соответствие между PageViewModel и PageView, я написал следующий код для каждой страницы в моем проекте:
<Window.Resources>
<DataTemplate DataType="{x:Type OurNewPageViewModel}">
<OurNewPageView />
</DataTemplate>
</Window.Resources>
Теперь я хочу добавить страницы в мастер, когда код пользователя вызывает конструктор моего мастера.Это означает, что для перемещения страниц View и ViewModel на сторону пользователя.Например, чтобы создать мастера с одной страницей, пользователь напишет следующий код: Wizard usersWizard = new Wizard (new usersViewModel (), new userView ());Проблема в том, что я не знаю, как обеспечить отображение между viewModel и View в моем конструкторе.Насколько я понимаю, я могу использовать два разных подхода для решения этой проблемы.Во-первых, использовать FrameworkElementFactory, но следующий код не работает:
//let we have WelcomePageView wpview and WelcomePageViewModel wpviewmodel
FrameworkElementFactory fef = new FrameworkElementFactory(wpview.GetType());
DataTemplate dt = new DataTemplate();
dt.DataType = wpview.GetType();
dt.VisualTree = fef;
base.Resources.Add(wpviewmodel.GetType(), dt);
Во-вторых, использовать XamlReader.Я могу создать шаблон данных, используя его, но я не знаю, как прикрепить его к ресурсам.