DataTemplate을 앱의 리소스 사전에 추가하는 방법을 알아 내려고하고 있습니다. 저는 DataTemplate이 (URL을 통해) XAML에있을 때 그렇게하는 방법에 익숙하지만, DataTemplate이 코드에 정의되어있을 때 그렇게하는 방법은별로 모호합니다. 내가 DataTemplate을이 응용 프로그램의 리소스 사전으로하지 않습니다 수 가장 잘 같은 오류를 던지고되지에도 불구하고 : IS-DataTemplate (비 XAML)을 코드의 리소스 사전에 추가 하시겠습니까?
//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);
EDIT 작동하지 않는 내가 무엇을 가지고
. ViewModel이 나중에 XAML에서 호출되면 해당 ViewModel을 표시 할 적절한 DataTemplate이없는 것처럼 작동합니다. 예를 들어, 텍스트 "ShellPrototype.ViewModels.CoordinateViewModel"displayed- EG와 빈 창에
<StackPanel>
<ContentPresenter Content="{Binding ViewModel}" />
</StackPanel>
결과, 그것은보기를 표시하는 템플릿이 없습니다.
"작동하지 않는다"고 할 수 있겠습니까? 예외? 사전에서 검색 할 수 없습니까? (어떻게 사전에서 검색하려고합니까?) 사전에서 뭔가를 얻고 있지만 예상 한 것과 다릅니다. – itowlson
예, 잠깐만 죄송합니다. 게시물을 업데이트했습니다. 즉, DataTemplate은 사전에서 검색 할 수 없습니다. –