如何将 WPF BitmapImage UriSource 属性设置为相对路径?
我正在使用 BitmapImage 类在 WPF 中加载图像。当我为 UriSource 提供绝对路径时,我的代码可以完美运行,但当我尝试使用相对路径时,则不能。
我的 XAML 是:
<Image Width="50" Name="MemberImage" HorizontalAlignment="Left">
<Image.Source>
<BitmapImage DecodePixelWidth="50" UriSource="questionmark.jpg" />
</Image.Source>
</Image>
Questionmark.jpg 添加到项目中,并将资源的构建操作和复制到输出目录设置为始终复制。我收到的错误是“文件 [文件名] 不是项目的一部分或其“构建操作”属性未设置为“资源””。当我对 UriSource 使用绝对路径时,这是有效的,但显然不行。
我应该如何在 XAML 中定义我的 UriSource?
I'm loading an image in WPF by using the BitmapImage class. My code works perfectly when I give an absolute path for the UriSource but not when I try and use a relative path.
My XAML is:
<Image Width="50" Name="MemberImage" HorizontalAlignment="Left">
<Image.Source>
<BitmapImage DecodePixelWidth="50" UriSource="questionmark.jpg" />
</Image.Source>
</Image>
The questionmark.jpg is added to the project with a Build Action of Resource and Copy to Output Directory set to Copy always. The error I get is "The file [file name] is not part of the project or its 'Build Action' property is not set to 'Resource'". This works when I use an absolute path for the UriSource but that obviously won't do.
How should I be defining my UriSource in the XAML?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为一旦图像位于资源中,您就不需要将其复制到输出目录。
正确的指定方法是
将
ApplicationNamespace
替换为您的应用程序命名空间,并将
Images/App/image.png
替换为您在项目中的图像路径I don't think you need to copy the image to output directory once it's in resource.
Correct way to specify is
Just replace
ApplicationNamespace
with your application namespaceand
Images/App/image.png
with your image path in the project属性中具有以下选项的图像文件
构建操作=内容
复制到输出目录=如果较新则复制
参考:
Xaml - 位图 UriSource - 绝对路径有效,相对路径无效,为什么?
Image files with the following options in properties
Build Action=Content
Copy to Output Directory=Copy if newer
Reference:
Xaml - Bitmap UriSource - absolute path works, relative path does not, why?
我无法在我的计算机上重现该问题:
即使在移动 .exe 并重命名 jpg 之后,这里也能完美运行。一定有别的东西在咬你!
I cannot reproduce the problem on my computer:
Works perfectly here, even after moving the .exe and renaming the jpg. Something else must be biting you!