2010-07-05 4 views
4

Я загружаю изображение в WPF с помощью класса BitmapImage. Мой код работает отлично, когда я даю абсолютный путь для UriSource, но не тогда, когда я пытаюсь использовать относительный путь.Как установить свойство WPF BitmapImage UriSource на относительный путь?

Мой XAML является:

<Image Width="50" Name="MemberImage" HorizontalAlignment="Left"> 
    <Image.Source> 
     <BitmapImage DecodePixelWidth="50" UriSource="questionmark.jpg" /> 
    </Image.Source> 
</Image> 

questionmark.jpg добавляется в проект с Построение действий ресурсов и Копировать в выходной каталог набора для копирования всегда. Ошибка, которую я получаю: «Файл [имя файла] не является частью проекта или его свойство« Свойство сборки »не установлено в« Ресурс »». Это работает, когда я использую абсолютный путь для UriSource, но этого явно не будет.

Как я должен определять свой UriSource в XAML?

ответ

0

Я не могу воспроизвести проблему на моем компьютере:

  • я добавить JPG, выбрав Добавить существующий элемент в меню Проект
  • я установить его Построить ACTIO к ресурсу и скопировать в папку вывода всегда ,
  • Мой XAML - это то же самое.

Отлично работает здесь, даже после перемещения .exe и переименования в jpg. Что-то еще должно вас кусать!

+0

Да, что-то есть. Теперь я посмотрел немного дальше, и файл не копируется в выходной каталог, несмотря на то, что он установлен как «Ресурс» и «Копировать всегда», как вы это делали. Любая идея, почему копия не будет выполнена? –

+0

Если я изменил действие сборки для контента, файл скопирован, но версия в выходном каталоге не может быть использована из-за той же ошибки в XAML «Файл [имя файла] не является частью проекта или его« Build Action » Свойство не установлено в «Ресурс» ». Скопировав его вручную в выходной каталог, оставив его в «Ресурсе» в решении, а перестройка проекта дает ту же ошибку. –

+0

Когда вы устанавливаете действие сборки на «ресурс», jpg встроен в.exe или .dll, поэтому он не может быть идентифицирован отдельно. Итак, это ожидаемый результат. Кажется, что вы не включили файл в свой проект: нажмите на меню «Проект» и выберите «Добавить существующий элемент». Это должно решить. – Dabblernl

5

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

Правильный способ определить это

<BitmapImage 
    x:Key = "Logo" 
UriSource = "pack://application:,,,/ApplicationNamespace;component/Images/App/image.png" 
/> 

Просто замените

ApplicationNamespace с пространством имен приложения

и

Images/App/image.png с пути изображения в проекте

+0

Не должно быть «UriSource =» pack: // application: ,,,/ApplicationNamespace «' а не 'UriSource =" pack: // application: ,,,/ApplicationNamespace; component/Images/App/image. png "'? – BendEg

 Смежные вопросы

  • Нет связанных вопросов^_^