В WPF как мне указать путь к файлу, вложенному в каталог, используя XAML? - PullRequest
6 голосов
/ 10 ноября 2008

Я пытаюсь сделать это ...

<Image x:Name="imgGroupImage" Source="Images\unlock.png" Margin="0,0,5,0" />

Но я получаю эту ошибку ...

Невозможно преобразовать строку «Images \ unlock.png» в атрибуте «Source» в объект типа «System.Windows.Media.ImageSource». Невозможно найти ресурс 'forms / images / unlock.png'. Ошибка в объекте 'System.Windows.HierarchicalDataTemplate' в файле разметки 'Fuse; компонент / forms / mainwindow.xaml' Строка 273, позиция 51.

Как вы видите, моя форма, которая включает этот XAML, находится в папке с именем Forms. Мои изображения находятся в папке с именем Images. Как мне сопоставить формы с изображениями?

Я пытался Source="..Images\unlock.png", который не работает в WPF.

Любая помощь?

Ответы [ 4 ]

9 голосов
/ 10 ноября 2008

Попробуйте использовать косую черту, а не обратную косую черту, и используйте абсолютный путь, начав с косой черты:

Source="/Images/unlock.png"

Это обычно работает для меня.

Если это не удастся, взгляните на URI пакетов .

5 голосов
/ 29 ноября 2011
  1. Добавьте ваше изображение в проект в VS
  2. Щелкните правой кнопкой мыши на этом изображении unlock.png
  3. Перейти в контекстное меню / Свойства
  4. Изменить действие сборки на ресурс

Вот так: -)

0 голосов
/ 05 сентября 2017

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

<Image Source="pack://application:,,,/Resources/image.png"/>

Где Ресурсы - это имя каталога, из которого вы хотите использовать ресурсы, а image.png - это имя изображения для отображения. Ответ найден благодаря @ matt-hamilton и @ brian-hinchey и их упоминанию Pack URI.
Прекрасно работает с вашими собственными конвертерами. Вы просто должны вернуть схему соответствия строк выше.

0 голосов
/ 10 ноября 2008

Вы пытались установить источник BitmapImage ?

<Image x:Name="imgGroupImage" Margin="0,0,5,0"  >
   <Image.Source>
      <BitmapImage UriSource="Images/unlock.png" />
   </Image.Source>
</Image>

Я считаю, что тип по умолчанию Uri для UriSource является относительным Uri, который работает с базовым классом приложения. Возможно, вам будет проще настроить BitmapSource, чем пытаться найти точный способ ввода пути к файлу в атрибуте Source.

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