我试图弄清楚如何将 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 不会进入应用程序的资源字典,尽管没有抛出任何错误。当稍后从 XAML 调用 ViewModel 时,它的行为就像没有合适的 DataTemplate 来显示它一样。例如,
<StackPanel>
<ContentPresenter Content="{Binding ViewModel}" />
</StackPanel>
导致显示文本“ShellPrototype.ViewModels.CoordinateViewModel”的空窗口 - EG,它没有显示视图的模板。