Так что, в принципе, вам нужно создавать шаблоны данных программно ... Это не очень просто, но я думаю, что вы можете достичь этого с помощью класса FrameworkElementFactory
:
public void AddDataTemplateForView(Type viewType)
{
string viewModelTypeName = viewType.FullName + "Model";
Type viewModelType = Assembly.GetExecutingAssembly().GetType(viewModelTypeName);
DataTemplate template = new DataTemplate
{
DataType = viewModelType,
VisualTree = new FrameworkElementFactory(viewType)
};
this.Resources.Add(viewModelType, template);
}
Я не тестировал его, поэтому могут потребоваться некоторые корректировки ... Например, я не уверен, каким должен быть тип ключа ресурса, поскольку он обычно устанавливается неявно, когда вы устанавливаете DataType в XAML