2015-12-20 5 views
1

Мне нужно передать мои DataTemplates в ResourceDictionary. Все работает отлично, за исключением обнаружения DataTypes DataTemplates.ResourceDictionary не может найти DataType для DataTemplate

Для того, чтобы получить ResourceDictionary я написал следующую функцию:

public static ResourceDictionary ParseResourceDictionary(String path) 
{ 
     System.Windows.ResourceDictionary templates = new System.Windows.ResourceDictionary(); 
     templates = new System.Windows.ResourceDictionary() { Source = new System.Uri(path) }; 
     return templates; 
} 

Мой ResourceDictionary выглядит следующим образом:

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:sys="clr-namespace:System;assembly=mscorlib" 
xmlns:classes="clr-namespace:ResourceDictTest;assembly=ResourceDictTest" 
> 

<DataTemplate DataType="{x:Type classes:Company}"> 
    <TextBlock Text="{Binding Name}"/> 
</DataTemplate> 

Если я получаю словарь с помощью моей функции, я получил исключение, что DataType «Компания» не может быть найдена в классах, но когда я пишу «classes:», компания будет предлагаться, поэтому пространство имен isn «Совершенно неправильно.

Сообщение об ошибке будет что-то подобное (не мой родной язык):

Нет общественного типа с «Компанией» имя может быть найдено.

И да, класс «Компания» настроен публично.

До этого я пробовал:

xmlns:classes="clr-namespace:ResourceDictTest" 

Вместо этого:

xmlns:classes="clr-namespace:ResourceDictTest;assembly=ResourceDictTest" 

И получил сообщение, что произошла ошибка создания типа из "классов: компания".

Может ли кто-нибудь дать мне подсказку?

ответ

1

Вы пытались получить ResourceDictionary через XAML?

<Application.Resources> 
    <ResourceDictionary Source="Resources/ResourceDictTest.xaml" /> 
</Application.Resources> 
+0

У меня нет. Должен ли я добавить весь путь в исходный код? Как C: \ Users \ ... \ ResourceDictTest.xaml? Я пробовал это так, и ошибка все еще происходит. Я действительно не знаю, что случилось. –

+1

Вы должны установить его относительно корня проекта. – Ian

+0

Итак, если мой проект называется «ResourceDictTest», мне нужно поставить ResourceDictionary в \ ResourceDictTest? У меня есть другая папка под названием «Шаблоны», поэтому мой путь такой же: C: \ Users \ ... \ ResourceDictTest \ Templates \ ResourceDictText.xaml. Я точно не понимаю, что вы подразумеваете под этим. Это не мой родной язык. € dit: Я попробовал Templates \ ResourceDict.Text.xaml сейчас, но он все еще не работает. –