Произошла ошибка при загрузке словаря ресурсов

Я просмотрел и попробовал эти другие решения, которые я нашел, и даже скопировано Документация Telerik. Тем не менее, я все еще не могу получить рабочее решение.

XAML:

    <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="NotifyIconResources.xaml" />
            <ResourceDictionary Source="pack://application:,,,/Telerik.Windows.Themes.Windows8;component/Themes/System.Windows.xaml" />
            <ResourceDictionary Source="pack://application:,,,/Telerik.Windows.Themes.Windows8;component/Themes/Telerik.Windows.Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/Telerik.Windows.Themes.Windows8;component/Themes/Telerik.Windows.Controls.Navigation.xaml" />
        </ResourceDictionary.MergedDictionaries>

Вот изображение ошибки, которую выдает ReSharper: ReSharper Image

Вот изображение сборки, являющейся ссылкой: Сборка как ссылка

Вот изображение свойств сборки: Свойства сборки

Наконец, вот информация об исключении, когда я пытаюсь запустить приложение:

System.Windows.Markup.XamlParseException was unhandled
  HResult=-2146233087
  Message='Cannot create unknown type '{clr-namespace:Telerik.Windows.Controls.External}Windows8ThemeExternal'.' Line number '15' and line position '6'.
  Source=PresentationFramework
  LineNumber=15
  LinePosition=6
  StackTrace:
       at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
       at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
       at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
       at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
       at MyApp.App.InitializeComponent() in App.xaml: line 1
       at MyApp.App.Main() in c:\MyApp\obj\Debug\App.g.cs: line 0
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Xaml.XamlObjectWriterException
       HResult=-2146233088
       Message='Cannot create unknown type '{clr-namespace:Telerik.Windows.Controls.External}Windows8ThemeExternal'.' Line number '15' and line position '6'.
       Source=System.Xaml
       LineNumber=15
       LinePosition=6
       StackTrace:
            at System.Xaml.XamlObjectWriter.WriteStartObject(XamlType xamlType)
            at System.Xaml.XamlWriter.WriteNode(XamlReader reader)
            at System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector)
            at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
       InnerException: 

person Cameron    schedule 24.06.2015    source источник


Ответы (1)


Первое, что я знаю, НЕВЕРНО, и это нужно добавить, согласно документации Telerik,

Их можно объединить в ресурсах вашего приложения (в App.xaml), и в результате они будут неявно применяться к любому элементу управления, для которого не задан локальный стиль. Например, если вам нужно стилизовать элемент управления из Telerik.Windows.Controls.dll, вам понадобится словарь ресурсов Telerik.Windows.Controls.xaml.

При этом вам не хватает ResourceDictionary вместо DataVisualization. Если это не решит проблему, продолжайте читать.

Последнее, что я помню, когда я рассматривал темы для своего приложения с помощью Telerik, есть несколько различных способов применения стилей, и сделать это правильно поначалу может быть немного сложно. Существуют неявные стили (NoXaml) и стандартные стили, в которых стили встроены в библиотеки элементов управления. Неявный стиль — это рекомендуемый подход к оформлению вашего приложения в «глобальном» стиле. IIRC, он также более производительный и гораздо более чистый в коде.

Поскольку мы говорили в чате WPF, похоже, вы не были уверены, какие двоичные файлы вы пытаетесь собрать из исходного кода. Неявные стили требуют сборки исходного кода Binaries.NoXaml. После того, как это сказано и сделано, вы должны убедиться, что добавляете ссылки на правильные сборки из каталога ..\Binaries.NoXaml\WPF4x\.

В прошлый раз, когда я собирал из исходного кода, инструкции по сборке были включены в загруженный .ZIP. Убедитесь, что вы внимательно следуете этим инструкциям. У меня нет встроенных инструментов Visual Studio Telerik для создания/развертывания моих библиотек, на которые я ссылаюсь, поэтому, если да, то, возможно, вам подойдет ручной режим.

Еще пара вещей. Я подозреваю, что сборка не была успешно завершена. Номер вашей версии в ссылках на Telerik должен отличаться от 0.0.0.0. Во-вторых, если я правильно помню, у меня были проблемы с определением источника, и возможно порядок имеет значение, поэтому попробуйте использовать источник, который я использовал в моем примере ниже, и, возможно, переместите NotifyIconResources.xaml ниже объявлений Telerik.

Вот мой XAML, используемый с техникой неявного стиля:

<ResourceDictionary Source="/Telerik.Windows.Themes.Windows7;component/Themes/Telerik.Windows.Controls.xaml" />
<ResourceDictionary Source="/Telerik.Windows.Themes.Windows7;component/Themes/System.Windows.xaml" />
<ResourceDictionary Source="/Telerik.Windows.Themes.Windows7;component/Themes/Telerik.Windows.Controls.Input.xaml" />
<ResourceDictionary Source="/Telerik.Windows.Themes.Windows7;component/Themes/Telerik.Windows.Controls.Navigation.xaml" />

Как всегда, начав новый проект и получив базовую работу, подобную этой, вы можете сотворить чудеса, а также помешать вам изменить так много вещей в вашей текущей кодовой базе, что в конечном итоге вы забудете то, что вы изменили, и вызовет проблемы в места, где они вам не нужны.

person Kcvin    schedule 25.06.2015