我有一个 WPF 类库,其中包含一个包含图像的文件夹“图像”。
在 WPF 应用程序中,我不会使用以下方式引用该文件夹中的图像
<Image Name="image" Grid.Row="0" Source="pack://application:,,,/ImageService.dll;Component/Images/image.jpg"/>
该图像被标记为“资源”,我也将其添加到类库项目的资源中。经过一番搜索后我发现,我必须将 dll 复制到 exe 目录中。
在设计时图像可以正确显示。启动可执行文件后source
图像的属性为空。输出窗口中没有错误消息,也没有提示。
看起来,pack uri 的格式不正确,因此运行时引用了错误的地方。有没有办法使用“....\AssemblyName.dll”指定相对于可执行文件的程序集名称或相对于文件系统根目录的绝对名称。
不幸的是,我无法通过代码分配图像源,因为所有内容都通过 XAMLWriter - XAMLReader 构造从 dll 到执行程序集。
您不必将图像复制到输出目录。确保您标记了Build Action
as Resource
并设置Copy to Output Directory
to false
.
此外,如果 XAML 和图像驻留在同一程序集中,您可以跳过包 URI 中的程序集名称。如果它们驻留在不同的程序集中,您只需提供程序集名称(从路径中删除 dll).
<Image Source="pack://application:,,,/ImageService;Component/Images/image.jpg"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)