Excel VSTO ADD-IN中WPF/MVVM模式下图片显示异常求助
问题描述
- 参照WPF/MVVM构建Excel VSTO Add-in的教程操作,除自定义图片显示外其余功能正常
- 设计器中图片可正常渲染,但程序运行时图片区域为空
- 已尝试以下方案均未解决:
- 将图片格式转换为.png/.jpg/.ico
- 修改资源文件的生成操作
- 调整XAML中图片路径(添加前缀
/时设计器可显示,去掉则不行;通过图片框设置图片后文件存入控件,但运行时仍无图)
- 额外问题:在图标和清单中添加图标时,文件实际存在但程序无法识别,怀疑是引用方式错误
解决方案建议
确认图片资源的生成操作与路径引用
- 把图片文件的生成操作设置为
Resource(不要选Content或其他选项),这是WPF嵌入资源的标准配置 - XAML里用绝对包路径引用:
pack://application:,,,/YourAssemblyName;component/Images/YourImage.png- 把
YourAssemblyName替换成你的VSTO项目程序集名称(可在项目属性→应用程序里查看) - 如果图片直接放在项目根目录,路径改成
pack://application:,,,/YourAssemblyName;component/YourImage.png
- 把
- 别只用
/Image.png这种相对路径,VSTO插件的运行上下文和普通WPF应用不一样,相对路径大概率解析失败
- 把图片文件的生成操作设置为
检查资源嵌入与运行时加载逻辑
- 右键项目→属性→资源,确认图片已经添加到项目资源里(如果用资源文件方式的话)
- 如果通过代码加载图片,用
Application.GetResourceStream方法:var uri = new Uri("pack://application:,,,/YourAssemblyName;component/Images/YourImage.png"); var streamInfo = Application.GetResourceStream(uri); var bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.StreamSource = streamInfo.Stream; bitmap.EndInit(); YourImageControl.Source = bitmap;
清单与图标文件的特殊处理
- VSTO插件的
.vsto清单文件里引用图标时,要确保图标文件的生成操作设为Content,且复制到输出目录选始终复制 - 清单里的图标路径用相对于输出目录的相对路径,比如:
<icon>Images/AddInIcon.ico</icon>,要保证输出目录里有对应路径的图标文件 - 如果安装插件后图标不显示,手动去
%LOCALAPPDATA%\Apps\2.0下的插件安装目录检查,确认图标文件存在
- VSTO插件的
排查路径大小写与拼写错误
- WPF资源路径区分大小写,要保证XAML里的路径和实际文件的文件名、文件夹名大小写完全一致
- 尽量避免文件名或文件夹名里有空格、特殊字符,建议改成无空格的小写格式(比如
logo.png别用Logo Image.png)
内容的提问来源于stack exchange,提问作者Vin
相关产品推荐
相关产品推荐

