Изображение отображается в конструкторе Visual Studio, но не во время выполнения - PullRequest
27 голосов
/ 13 декабря 2011

Я сейчас работаю с VS studio 2010, .NET 4.0.Вот мой сценарий:

В настоящее время у меня есть проект библиотеки классов под названием «Изображения», который содержит подпапку «Значки».Все мои значки в настоящее время живут в этом проекте и доступны для нескольких проектов через siteoforigin.Все отображается хорошо в дизайнере, но во время выполнения изображения не отображаются.

Вот моя структура папок:

  • Корневая папка
    • Изображения
      • Иконки
    • Проект1
    • Проект 2
    • Проект 3

Все проекты ссылаются на класс изображений Lib.proj, и все значки в подпапке «icons» в проекте «Images» установлены на: «Build Action = Resource».

xaml выглядит так (что прекрасно видно во время разработки):

     <Button Name="Button1" Click="Button1_Click">
        <Button.Content>
            <Image Source="pack://siteoforigin:,,,/Data.Images;component/Icons/Button1.png" />
        </Button.Content>
    </Button>

Ответы [ 19 ]

44 голосов
/ 06 марта 2015

Это сводило меня с ума. Я пробовал много разных вещей на основе разных статей, но ничего не получалось. Мое окно xaml и образ находятся в отдельной DLL от исполняемой сборки. Не уверен, что это было частью моей проблемы.

В конце концов я добился успеха:

  1. Убедитесь, что свойства изображения в проекте имеют «Build Action» = «Resource», а не «Embedded Resource»
  2. В xaml, с выбранным тегом изображения, используйте окна свойств, чтобы выбрать раскрывающийся список Источник, поскольку СЕЙЧАС изображение появляется в раскрывающемся списке! Это позволило визуальной студии отформатировать строку для меня.

Струйная визуальная студия, отформатированная для моего изображения, была:

<Image Source="/Paperless.Common;component/Resources/Checkbook.png" />

где «Paperless.Common» - это название моей сборки, а «Checkbook.png» - мое изображение, которое находилось в папке «Resources».

38 голосов
/ 16 апреля 2013

Возможно, для изображения не задано действие «Сборка» в качестве ресурса.Если это что-то еще, включая встроенный ресурс, то оно не будет отображаться должным образом во время выполнения.

14 голосов
/ 13 декабря 2011

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

SiteOfOrigin:

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

4 голосов
/ 31 августа 2016

Ну, я потратил более 3 часов своего времени на эту проблему. Ваши ответы помогли мне частично решить проблему, и именно это побудило меня добавить к этому полезному обсуждению.

Моя проблема решена как:

  1. выберите все изображения в ресурсах обозревателя решений.
  2. Щелкните правой кнопкой мыши и перейдите к свойствам.
  3. Создать действие для «Встроенного ресурса»
  4. Копировать в вывод в «Копировать всегда»
  5. сохранить и построить решение.
  6. добавить изображение и позаботиться о нем или значение ZIndex.
  7. После всего этого я нашел себя, когда использую изображение несколько раз или пытаюсь перейти на другое изображение в том же элементе управления изображением, чтобы изменить путь для изображения в XAML или в свойствах элемента управления изображением на быть:

    source="pack:://siteoforigin:,,,/Resources/image.png"
    
3 голосов
/ 11 апреля 2014

Я пришел сюда, чтобы показать данные изображения моего времени разработки (обратная проблема).

ImagePath="pack://application:,,,/MyApplicationName;component/Images/Icons/Button1.png" - вот что помогло, в дополнение к Build Action, установленному на Resource и Copy to Output Directory установлен на Copy if newer.

1 голос
/ 15 января 2019

У меня сработало следующее:

• Действие построения = ресурс

• Копировать в выходной каталог = Не копировать

xaml:

<Image Source=“Rsources/myPic.png”/>

Где «myPic.png» - изображение в папке «Ресурсы»

1 голос
/ 08 мая 2018

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

Пример:

"Source =" / Images / Logo / close.png ""

1 голос
/ 18 января 2012

Вы также можете просто использовать относительные пути:

<Button Name="Button1" Click="Button1_Click">
    <Button.Content>
        <Image Source="Icons/Button1.png" />
    </Button.Content>
</Button>
1 голос
/ 15 января 2014

Это может быть так же просто, как то, что я только что сделал сегодня сегодня.Я поместил файл в папку, не ссылаясь на него в решении.Во время дизайна он обнаружился нормально.

1 голос
/ 26 февраля 2015

У меня была такая же проблема.
Теперь она работает ...
Попробуйте это:

<Button x:Name="b2" HorizontalAlignment="Left" VerticalAlignment="Top"
    Width="26" Height="29"> 
    <Button.Background> 
        <ImageBrush ImageSource=" a.png"/> 
    </Button.Background>
</Button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...