URI ресурса в WPF UserControl, который размещается в приложении Windows Forms

У меня есть WPF UserControl, который использует некоторые растровые ресурсы PNG как часть своего пользовательского интерфейса. В настоящее время на эти файлы ссылаются Build Action: Content и Copy to Output Directory: не копировать. Элементы этого UserControl используют следующий URI для доступа к ресурсу: pack://application:,,,Resources/ui/Cross.png который отлично работает в дизайнере.

Пользовательский элемент управления затем используется в приложении Windows Forms через элемент управления ElementHost, после чего все ссылки на изображения перестают работать. UserControl находится в своей собственной сборке, и приложение Windows Forms ссылается на эту сборку.

Я также попытался изменить URI на это: pack://application:,,,Assembly.Name;component/Resources/ui/Cross.png

Я также попытался прочитать это, чтобы помочь.

Единственный оставленный мной вариант - включить код для ручной установки ImageSource всех элементов Image в пользовательском элементе управления, что потребует много работы. Я чувствую, что должен быть способ решить это лучше.

1 ответ

Решение

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

Эта комбинация не работает. Content требует, чтобы файл был скопирован.

Тем не менее, вы должны использовать Build Action Resource, И ваш Pack URI пропускает косую черту после ,,,,

Так должно быть

pack://application:,,,/AssemblyName;component/Resources/ui/Cross.png

при условии, что файл изображения является частью вашего проекта Visual Studio, расположенного в подпапке с именем ui в папке проекта с именем Resources,

Посмотрите URIs Файла пакета Ресурса для деталей.

Другие вопросы по тегам