相对包URI不工作

本文关键字:工作 URI 相对 | 更新日期: 2023-09-27 18:17:18

我在项目的Img文件夹中有几个图像,所有这些图像都设置为Build Action: Resource.

我过去用相对uri指代所有的图像,像这样:

new Uri("Img/image.png", UriKind.Relative);

我不知道是什么改变了,但它突然停止工作,没有找到图像。我现在必须这样引用它们:

new Uri("pack://application:,,,/MyApp;component/Img/image.png");

为了让他们工作。我不明白为什么相对路径突然失效了。(相对路径仍然在XAML中工作)

相对包URI不工作

具有构建操作Resource的映像文件必须由包uri引用。

从MSDN:

资源文件被配置为MSBuild资源项,并且是编译成程序集。WPF支持包uri的构造,可用于标识被编译的资源文件编译成本地程序集或编译成程序集从本地程序集引用。

WPF自动为XAML中的图像uri添加前缀pack://application:,,,(或pack://application:,,,/)。当你写

<Image Source="/Img/image.png"/>

WPF自动将其转换为本地程序集包URI

"pack://application:,,,/Img/image.png".