如何在XAML中引用图像资源?

时间:2011-04-05 13:29:07

标签: wpf

我在一个Window上放了一个Image控件,我希望显示一个存储在名为“Resources.resx”的项目资源文件中的图像。资源文件中的图像名称为“搜索”。

有人可以告诉我如何做到这一点吗?

4 个答案:

答案 0 :(得分:103)

如果图像位于资源文件夹中,并且其构建操作设置为“资源”。您可以在XAML中引用图像,如下所示:

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

假设您在Resources文件夹下没有任何文件夹结构,并且它是一个应用程序。例如,我使用:

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

当我在Resources文件夹下有一个名为RibbonImages的文件夹时。

答案 1 :(得分:26)

如果你的项目的Icons文件夹中有一个图像,并且它的构建操作是“资源”,你可以像这样引用它:

<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;

答案 2 :(得分:8)

使用资源文件的一个好处是按名称访问资源,因此图像可以更改,图像名称可以更改,只要资源保持最新,就会显示正确的图像。

这是一种更简洁的方法来实现这一目标: 假设Resources.resx在'UI.Images'命名空间中,请在xaml中添加命名空间引用,如下所示:

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

像这样设置你的Image源:

<Image Source={Binding {x:Static UI:Resources.Search}} />其中“搜索”是资源的名称。

答案 3 :(得分:4)

  1. 将文件夹添加到项目中,并通过“现有项目”将图像添加到这些文件夹中。
  2. XAML与此类似:<Image Source="MyRessourceDir\images\addButton.png"/>
  3. F6(Build)