WPF中Image路径含component时程序集加载失败问题求助
解决WPF中带
component的Pack URI图片加载失败问题 问题重现
使用不带component的路径pack://application:,,,/Registration_and_Login_Forms/Images/key-icon.png能正常加载图片,但改用带component的路径pack://application:,,,/Registration_and_Login_Forms;component/Images/key-icon.png时,出现“无法加载文件或程序集”错误,同时需要兼容XAML中的<customcontrols:BindablePasswordBox>标签。
相关代码:
<PasswordBox.Background> <ImageBrush ImageSource="pack://application:,,,/Registration_and_Login_Forms;component/Images/key-icon.png" Stretch="None" AlignmentX="Left"/> </PasswordBox.Background>
<customcontrols:BindablePasswordBox Password="{Binding Password}" Height="28" Margin="0,5,0,0"> </customcontrols:BindablePasswordBox>
解决步骤
- 核对程序集名称:带
component的Pack URI格式要求/程序集名称;component/部分的程序集名必须和项目实际的程序集名称完全一致。右键项目→属性→应用程序→程序集名称,确认这里的名称和路径里的Registration_and_Login_Forms完全匹配(注意大小写、空格)。 - 检查图片资源属性:右键
key-icon.png文件→属性→生成操作,确保设置为Resource。只有标记为Resource的资源文件才能通过带component的Pack URI访问。 - 简化路径写法:如果当前XAML文件和图片资源在同一个程序集里,可以省略程序集名称,直接用
pack://application:,,,;component/Images/key-icon.png,甚至更简洁的/Images/key-icon.png(WPF会自动解析为正确的Pack URI),这种写法既兼容自定义控件,又能避免程序集名写错的问题。 - 排查自定义控件引用:确认
<customcontrols:BindablePasswordBox>的命名空间引用正确,比如xmlns:customcontrols="clr-namespace:你的自定义控件命名空间;assembly=对应程序集名称"。如果自定义控件在单独的程序集,要确保已添加该程序集的引用,避免控件引用错误间接导致资源加载失败。
内容的提问来源于stack exchange,提问作者Євгеній Анатолійович Ткач
相关产品推荐
相关产品推荐

