为什么我不能在WPF应用程序中设置图像源?

4

我正在学习WPF,使用的是VS 2008。我在XAML中添加了一个Image控件,并向项目中添加了一个GIF文件。如果我使用XAML设计器的属性面板来设置图像的Source属性,那么Source属性的下拉列表中将包含以下内容:

C:\Sample Project;component/pinHorizontal.gif

这里有几个问题:

  1. 我的项目名为“Sample Project”,不在驱动器的根目录中。

  2. 为什么要加上“;component”?

如果我选择给定的值,就会出现“属性值无效”的错误(是的,一点也不好笑)。

如果我进入XAML源代码并手动设置Source属性,代码如下:

<Image Name="PinImage" Source="pinHorizontal.gif"/>

XAML设计器出现了这个错误:
"The file pinHorizontal.gif is not part of the project or its 'Build Action' property is not set to 'Resource'."
为什么这个任务如此困难?我该如何分配图像源?
6个回答

4

在解决方案资源管理器中右键单击图像文件(pinHorizontal.gif),选择属性,找到“生成操作”属性,将其设置为“资源”。希望这能帮到您!


4
请阅读这篇文章,但请注意它并不是特别容易理解 :-)
我猜想你希望使用pack://application:,,,/pinHorizontal.gif作为您的图像路径。如果您的图像设置为BuildActionResource,那么这将起作用。

WPF无疑是强大且高效的——但为什么他们要使得它的惯例和语法如此复杂呢? - elmonty
4
伟大的力量带来巨大的困惑;-) - Dan Puzey
谢谢。更新指向特定(较旧的).NET框架版本,以便链接再次有效。 - Dan Puzey

1

这篇文章是一个“也是”……不是对原问题的回答。

我只是想记录一下,以防将来有其他可怜的家伙遇到这个问题……并且通过谷歌搜索错误信息找到了这个SO问题……所以这里是一个很好的地方。

我一直在创建新的图标(实际上是位图),并将它们“即时”添加到我的Visual Studio 2008项目中(即添加~现有项)。IDE一直在我的XAML页面上报告文件${filename}不是项目的一部分,或者其“生成操作”属性未设置为“资源”错误……但我的项目可以构建和运行……那是怎么回事?

我尝试了我能想到的一切方法来让Visual Studio刷新其对文件系统的视图,但都没有成功。

嗯,我刚刚发现重新启动Visual Studio会“刷新”其文件系统/生成输出内容的缓存,从而使IDE中那些恼人的非错误消失。因此,我添加了一批图标,将它们全部标记为资源~复制(如果更新),构建,然后重新启动IDE,一切都很好。

干杯。Keith。


0
在“解决方案资源管理器”中,选择您的项目并右键单击重新生成解决方案,然后尝试再次添加图像,应该可以正常工作。
--或--
生成选项卡下选择重新生成解决方案,然后尝试再次添加图像。

0

您可以在XAML中使用此代码片段,从绝对路径加载图像而无需设置任何内容。使用DecodePixelWidth或DecodePixelHeight来节省应用程序内存。

<Image>
        <Image.Source>
            <BitmapImage DecodePixelWidth="200" UriSource="C:\image.png" />
        </Image.Source>
</Image>

希望能对你有所帮助!


-1
我遇到了完全相同的问题。当“选择图像”框弹出时,我只是手动键入了文件位置,这对我起作用了。
在我让它工作后,我再次打开了“选择图像”框,并注意到文件位置前面现在有file:///。我对Visual Basic(这是我正在使用的语言)基本一无所知,所以可能有一个很好的解释,但我不知道。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接