У меня есть мастер классов, который создает мастер со страницами, определенными в одном проекте. Модуль PageViewModel отделен от PageView. PageViewModel - обычный класс C#, полученный из абстрактного класса PageViewModelBase, а PageView - UserControl. Для того, чтобы определить соответствие между PageViewModel и просмотров страниц я написал следующий код для каждой страницы в моем проекте:Как добавить DataTemplate в ресурсы?
<Window.Resources>
<DataTemplate DataType="{x:Type OurNewPageViewModel}">
<OurNewPageView />
</DataTemplate>
</Window.Resources>
Теперь я хочу, чтобы добавлять страницы в мастере, когда код доступа пользователей вызывает конструктор моего мастера. Это означает, что вы перемещаете View Pages и ViewModel на пользовательскую сторону. Например, чтобы создать мастер с одной страницей, пользователь напишет следующий код: Wizard usersWizard = новый мастер (новые пользователиViewModel(), новый пользовательский вид()); Проблема в том, что я не знаю, как обеспечить отображение между 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. Я могу создать шаблон данных, используя его, но я не знаю, как присоединить его к ресурсам.
Очень хорошо! Это супер-старт, чтобы познакомиться с ioc, с собственным загрузчиком и так далее ... Спасибо :-) – peter70