Я пытаюсь понять, как добавить DataTemplate в словарь ресурсов приложения. Я знаком с тем, как это сделать, когда DataTemplate находится в XAML (через URI), но я немного не уверен, как это сделать, когда DataTemplate определен в коде.
То, что у меня есть, не работает -
//Create DataTemplate
DataTemplate template = new DataTemplate(typeof(CoordinateViewModel));
FrameworkElementFactory ViewStack = new FrameworkElementFactory(typeof(CoordinateView));
ViewStack.Name = "myViewStack";
template.VisualTree = ViewStack;
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.BeginInit();
dictionary.Add(template, template);
dictionary.EndInit();
App.Current.Resources.MergedDictionaries.Add(dictionary);
РЕДАКТИРОВАТЬ: насколько я могу, DataTemplate не попадает в словарь ресурсов приложения, несмотря на то, что не выдает никаких ошибок. Когда ViewModel позже вызывается из XAML, он действует так, как будто нет надлежащего DataTemplate для его отображения. Например,
<StackPanel>
<ContentPresenter Content="{Binding ViewModel}" />
</StackPanel>
В результате появляется пустое окно с текстом «ShellPrototype.ViewModels.CoordinateViewModel», например, в нем нет шаблона для отображения представления.