如何将WPF BitmapImage UriSource属性设置为相对路径?

时间:2010-07-05 14:51:42

标签: wpf uri bitmapimage

我正在使用BitmapImage类在WPF中加载图像。当我为UriSource提供绝对路径时,我的代码工作正常,但是当我尝试使用相对路径时,我的代码无效。

我的XAML是:

<Image Width="50" Name="MemberImage" HorizontalAlignment="Left">
    <Image.Source>
        <BitmapImage DecodePixelWidth="50" UriSource="questionmark.jpg" />
    </Image.Source>
</Image>

将questionmark.jpg添加到项目中,其中“资源构建操作”和“复制到输出目录”设置为“始终复制”。我得到的错误是“文件[文件名]不是项目的一部分,或者它的'Build Action'属性未设置为'Resource'”。当我使用UriSource的绝对路径时,这很有效,但显然不会这样做。

我应该如何在XAML中定义我的UriSource?

3 个答案:

答案 0 :(得分:8)

我不认为你需要将图像复制到输出目录中。一旦它在资源中。

指定的正确方法是

<BitmapImage 
    x:Key  = "Logo"
 UriSource = "pack://application:,,,/ApplicationNamespace;component/Images/App/image.png"  
/>

只需替换

带有应用程序命名空间的

ApplicationNamespace

Images/App/image.png在项目中使用您的图片路径

答案 1 :(得分:1)

属性中具有以下选项的图像文件
构建操作=内容
复制到输出目录=如果较新则复制

<BitmapImage x:Key="QuestionMark" UriSource="pack://siteoforigin:,,,/questionmark.png"/>


参考:
Xaml - Bitmap UriSource - absolute path works, relative path does not, why?

答案 2 :(得分:0)

我无法在计算机上重现该问题:

  • 我通过选择项目菜单中的添加现有项目
  • 来添加jpg
  • 然后我将Build Actio设置为Resource并将Copy复制到Output目录。
  • 我的XAML是一样的。

在此处完美运行,即使在移动.exe并重命名jpg之后也是如此。别的东西必须咬你!