Мне нужно передать мои 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"
И получил сообщение, что произошла ошибка создания типа из "классов: компания".
Может ли кто-нибудь дать мне подсказку?
У меня нет. Должен ли я добавить весь путь в исходный код? Как C: \ Users \ ... \ ResourceDictTest.xaml? Я пробовал это так, и ошибка все еще происходит. Я действительно не знаю, что случилось. –
Вы должны установить его относительно корня проекта. – Ian
Итак, если мой проект называется «ResourceDictTest», мне нужно поставить ResourceDictionary в \ ResourceDictTest? У меня есть другая папка под названием «Шаблоны», поэтому мой путь такой же: C: \ Users \ ... \ ResourceDictTest \ Templates \ ResourceDictText.xaml. Я точно не понимаю, что вы подразумеваете под этим. Это не мой родной язык. € dit: Я попробовал Templates \ ResourceDict.Text.xaml сейчас, но он все еще не работает. –