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

Val*_*l M 5 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>
Run Code Online (Sandbox Code Playgroud)

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

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

Tae*_*hin 10

一旦资源处于资源状态,我认为您不需要将图像复制到输出目录.

正确的指定方式是

<BitmapImage 
    x:Key  = "Logo"
 UriSource = "pack://application:,,,/ApplicationNamespace;component/Images/App/image.png"  
/>
Run Code Online (Sandbox Code Playgroud)

只需更换

ApplicationNamespace 与您的应用程序命名空

Images/App/image.png 与您在项目中的图像路径

  • 在我的测试中,“ApplicationNamespace”应替换为程序集的名称(如项目属性中所示),而不是项目的默认命名空间。 (2认同)

Dab*_*rnl 0

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

  • 我通过在“项目”菜单中选择“添加现有项目”来添加 jpg
  • 然后,我将其“Build Actio”设置为“Resource”,并将“Copy to Output”目录设置为“always”。
  • 我的 XAML 也是一样。

即使在移动 .exe 并重命名 jpg 之后,这里也能完美运行。一定有别的东西在咬你!