Доступ к ресурсам WPF из другой сборки, если нет App.xaml - PullRequest
0 голосов
/ 09 июля 2011

У меня создается расширение WPF для существующего клиентского приложения Win32 MFC. Внутри UserControl, расположенного в моей библиотеке классов WPF, я объединяю библиотеки следующим образом:

 <ResourceDictionary.MergedDictionaries>                
                <ResourceDictionary Source="MyResourceDLL;Component/dictionaries/styles.xaml"/>
            </ResourceDictionary.MergedDictionaries>

я тоже пробовал

   <ResourceDictionary.MergedDictionaries>                
                    <ResourceDictionary Source="pack://application:,,,/MyResourceDLL;Component/dictionaries/styles.xaml"/>
                </ResourceDictionary.MergedDictionaries>

В любом случае я получаю следующее исключение XamlParseException:

System.Windows.Markup.XamlParseException произошло * * +1010 Message = "MyResourceDLL; Компонентный / словари / styles.xaml» значение не может быть присвоено свойству «Источник» объекта 'System.Windows.ResourceDictionary. Не удается найти ресурс 'Ems.wpf.resources; компонент / словари / styles.xaml'. Ошибка на объекте 'System.Windows.ResourceDictionary' в файл разметки 'SARMaster.Maryln.EphemerisLib; компонент / getephemeriscontrol.xaml' Строка 9, позиция 37. "

Есть ли способ загрузить относительную DLL, на которую не ссылается основной проект?

Ответы [ 2 ]

0 голосов
/ 05 июня 2014

У меня возникла та же проблема, и я нашел решение. Мне нужно было удалить стиль моего ContentPresenter. Эта строка создала исключение XamlParseException:

<ContentPresenter.Resources>
    <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TextStyle}"/>
</ContentPresenter.Resources>

И после исправления этой ошибки мне нужно было выполнить следующие шаги, чтобы что-то на 100% работало:

Вот мои проекты:

  • StyleProject : проект Class Library, который я хочу использовать. Он содержит мои стили
  • MainProject : проект, который будет использовать стили

Для этого:

  1. Добавьте ссылку на мой StyleProject внутри моего MainProject ( см. Здесь )
  2. Создайте ResourceDictionary с именем MyStyle.xaml внутри моего MainProject
  3. Добавьте различные словари моего StyleProject следующего этого ответа в MyStyle.xaml
  4. Добавьте MyStyle.xaml в App.xaml , используя следующий код

Код:

<ResourceDictionary Source="Resources/MyStyle.xaml"/>
0 голосов
/ 31 июля 2013

Я недавно посмотрел на ту же проблему.При компиляции проекта Win32 CLR зависимости сборок, на которые ссылается проект MFC, не копируются, поэтому я просто настраиваю событие после сборки, чтобы скопировать соответствующие сборки в $ (TargetDir).

Неидеально, но я верю, что это по замыслу.

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