Изображение и управление во внешней библиотеке классов - PullRequest
1 голос
/ 24 ноября 2011

Итак, у меня есть приложение и библиотека классов.

Библиотека классов имеет

UserControls/Test.xaml
Images/TestImage.png

Тестовое изображение помечено как «Содержимое», а «Копировать в выходной каталог» установлено в значение «ложь», поскольку я хочу, чтобы все мои изображения сохранялись в классе dll.

Test.xaml выглядит примерно так ...

<UserControl x:Class="TestLib.UserControls.Test"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         >
         <Image Source="/TestLib;component/Images/TestImage.png"/>
</UserControl>

Конструктор работает нормально, но когда я пытаюсь создать экземпляр UserControl / Test.xaml в моем приложении, он выдает следующее исключение:

System.IO.IOException occurred
Message=Cannot locate resource 'images/TestImage.png'.
Source=PresentationFramework
StackTrace:
   at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access)
InnerException: 

Я попытался изменить тип ресурса на «Ресурс» и «Встроенный ресурс», но ни один из них не имеет значения. Я также попытался использовать строку полного пакета

"pack://application,,,/TestLib;component/Images/TestImage.png" 

но выдает точно такое же исключение, даже указав тот же 'images / TestImage.png'.

Редактировать: Я забыл упомянуть, что Images / TestImage.png не "включен", он "включен как ссылка". Видимо, это проблема из-за ошибки компилятора: Связанные файлы в структуре папок

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Последний URI должен работать с действием сборки 'Resource'. Попробуйте код из этого ответа .

0 голосов
/ 26 ноября 2011

Похоже, что решение состоит в том, чтобы не использовать «связанные» ресурсы вместо «включенных» в библиотеках.Компилятор не учитывает их путь, что делает невозможным обращение к ним при использовании их внутри библиотеки классов.См .: Связанные файлы в структуре папок

Даже если связанный файл находится в корне проекта, вы все равно не сможете ссылаться на него во время выполнения.

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