如何将WPF字符串形式的资源路径转换为ImageSource对象
WPF资源路径转ImageSource正确实现
报错原因
你使用的/[程序集名];component/[资源路径]是WPF专属的相对资源URI格式,直接调用new Uri(路径字符串)时,默认会按绝对路径规则解析,匹配失败就会抛出异常。
正确实现方案
方案1:指定URI为相对类型
仅需在构造Uri时显式指定UriKind.Relative即可:
var imgUri = new Uri(tb.ImageSource, UriKind.Relative); myImg.Source = new BitmapImage(imgUri);
方案2:补全为完整Pack URI
你也可以补全WPF的Pack URI前缀,按绝对URI规则解析:
var fullUriStr = $"pack://application:,,,{tb.ImageSource}"; var imgUri = new Uri(fullUriStr); myImg.Source = new BitmapImage(imgUri);
注意事项
- 确认图片资源的生成操作属性设置为
Resource,否则运行时会找不到资源 - 确认路径中的程序集名(示例中的
MySolution.Images)和实际存放图片的程序集名称完全匹配 - 如果图片和当前代码在同一个程序集内,可省略程序集名,路径简化为
/Resources/MyImage.png即可
内容的提问来源于stack exchange,提问作者Juan Pablo Gomez
相关产品推荐
相关产品推荐

