Не удается найти типы в ResourceDictionary при загрузке с XamlReader.Load - PullRequest
2 голосов
/ 29 октября 2010

В моем модуле призмы у меня есть следующий фрагмент кода:

        using (var manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyAssembly.CaseHost.ViewModelDataTemplates.xaml"))
        {
            ParserContext context = new ParserContext();
            context.XmlnsDictionary.Add("local", "clr-namespace:MyAssembly.CaseHost");
            var resourceDictionary = (ResourceDictionary)XamlReader.Load(manifestResourceStream, context);
            _resourceRegistry.Add(resourceDictionary);
        }

Я пытаюсь загрузить этот очень простой ResourceDictionary:

<DataTemplate DataType="{x:Type local:PlayPauseViewModel}">
    <Label>Look mom!</Label>
</DataTemplate>

Это дает мне следующее исключение:

Ссылка на тип не может найти открытый тип с именем 'PlayPauseViewModel'.

Это зверь приложения cpp / winforms / wpf, поэтому я не могу использовать URI. Как я могу решить это?

Ответы [ 2 ]

3 голосов
/ 29 октября 2010

Нашел!

Проблема заключалась в том, как было задано пространство имен в шаблоне данных:

Стандартное определение (не работало):

xmlns:local="clr-namespace:<Namespace>"

Более явное определение(сработало!)

xmlns:local="clr-namespace:<Namespace>;assembly=<assembly>"

Заменить <> на пространство имен и сборку.

2 голосов
/ 17 ноября 2010

Но что делать, если у вас есть этот код в той же сборке? Вам не разрешено использовать

xmlns:local="clr-namespace:<Namespace>;assembly=<assembly>"

есть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...