我在一个Window上放了一个Image
控件,我希望显示一个存储在名为“Resources.resx”的项目资源文件中的图像。资源文件中的图像名称为“搜索”。
有人可以告诉我如何做到这一点吗?
答案 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)
<Image Source="MyRessourceDir\images\addButton.png"/>