Как ссылаться на ресурсы изображений в XAML?

Я очень новичок в WPF. Я поместил элемент управления Image в окне, и я хотел бы установить изображение на элементе управления на изображение, которое хранится в файле ресурсов проекта с именем "Resources.resx". Имя изображения в файле ресурсов - "Поиск". Может ли кто-нибудь показать мне, как я могу это сделать?

Ответ 1

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

"pack://application:,,,/Resources/Search.png"

Предполагая, что в папке "Ресурсы" нет какой-либо структуры папок, и это приложение. Например, я использую:

ImageSource="pack://application:,,,/Resources/RibbonImages/CloseButton.png"

когда у меня есть папка с именем RibbonImages в папке Ресурсы.

Ответ 2

Если у вас есть изображение в папке "Иконки" вашего проекта, и его действие сборки "Ресурс", вы можете ссылаться на него следующим образом:

<Image Source="/Icons/play_small.png" />

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

var resourceManager = new ResourceManager(typeof (Resources));
var bitmap = resourceManager.GetObject("Search") as System.Drawing.Bitmap;

var memoryStream = new MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
memoryStream.Position = 0;

var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memoryStream;
bitmapImage.EndInit();

this.image1.Source = bitmapImage;

Ответ 3

Одним из преимуществ использования файла ресурсов является доступ к ресурсам по именам, поэтому изображение может измениться, имя изображения может измениться, если ресурс обновлен, будет отображаться правильное изображение.

Вот более чистый подход для достижения этого: Предполагая, что Resource.resx находится в пространстве имен UI.Images, добавьте ссылку на пространство имен в свой xaml следующим образом:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:UI="clr-namespace:UI.Images" 

Установите источник изображения следующим образом:

<Image Source={Binding {x:Static UI:Resources.Search}} /> где "Поиск" - это имя ресурса.

Ответ 4

  • Добавьте папки в свой проект и добавьте в них изображения через "Существующий элемент".
  • XAML похоже на это: <Image Source="MyRessourceDir\images\addButton.png"/>
  • F6 (Build)

Ответ 5

уже обсуждался, кажется, что здесь приведен пример здесь

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