You need to enable JavaScript to run this app. 如何正确将XAML文件移动到文件夹并解决WPF资源引用报错问题
优惠活动
大模型
产品
解决方案
定价
更多

如何正确将XAML文件移动到文件夹并解决WPF资源引用报错问题

解决方案

第一步:修正图片资源的URI格式(核心解决方法)

你遇到的是WPF相对资源URI的上下文匹配问题:WPF中相对URI的基准是当前调用该资源的XAML文件所在的文件夹,所以你在CustomImage内部使用时路径匹配可以正常加载,但是当CustomImage被其他文件夹下的UserControl引用时,相对路径的基准会变为外部UserControl的文件夹,就会找不到资源。
你需要把CustomImage中所有图片的URI改为固定的包URI(Pack URI),格式如下:

pack://application:,,,/[你的程序集名称];component/[图片在项目中的完整相对路径]

举个例子:如果你的程序集名称是WpfApp1,图片存放在项目的Assets/Images文件夹下名为icon.png,那么完整URI为:
pack://application:,,,/WpfApp1;component/Assets/Images/icon.png
这种格式的URI不依赖当前XAML的位置,全局可用。

第二步:确认图片文件的属性配置

在解决方案资源管理器中选中所有用到的图片文件,右键查看属性,确认:

  • 生成操作:设置为资源
  • 复制到输出目录:设置为如果较新则复制或者不复制均可

第三步:检查控件命名空间引用

如果移动文件后修改了CustomImage所属的命名空间,你需要在引用CustomImage的其他UserControl的XAML头部,更新对应的xmlns命名空间声明,比如你把CustomImage移到了项目的Controls文件夹下,对应命名空间改为了WpfApp1.Controls,那么需要添加引用:
xmlns:controls="clr-namespace:WpfApp1.Controls"
使用的时候就用<controls:CustomImage />即可。

第四步:清理项目缓存

如果修改后还是报错,直接删除项目根目录下的bin和obj文件夹,然后重新生成解决方案,避免Visual Studio缓存旧的资源配置导致异常。

关于自动生成代码的说明

你看到的InitializeComponent中的URI是XAML编译器自动生成的代码,存储在.g.cs后缀的自动生成文件中,手动修改确实会在编译时被覆盖,不需要手动修改这段代码,你把XAML中的路径配置正确后,这段代码会自动同步更新。

内容的提问来源于stack exchange,提问作者Noob001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 16:09:02