C# WPF设置Frame Source时路径重复拼接无法找到资源问题
问题原因
- UriKind参数匹配错误:你使用的
pack://application:,,,/xxx格式属于WPF的绝对包URI,但创建Uri时指定了UriKind.Relative,系统会误将这个绝对路径字符串识别为相对当前控件所在目录的相对路径,自动和L_Menu控件所在的/src/Content/UserControls/路径拼接,最终生成重复前缀的错误路径。 - 潜在拼写错误:错误提示中的资源名为
ls_accout.xaml,比你实际使用的LS_Account.xaml少了字母n,如果路径拼写错误也会触发资源找不到的报错,建议先核对拼写。
解决方案
你可以任选以下任意一种方式修改代码:
- 保持绝对包URI,将UriKind改为
Absolute即可:
myFrame.Source = new Uri("pack://application:,,,/src/Content/UserControls/LS_Account.xaml", UriKind.Absolute);
- 直接使用相对路径:因为LS_Account和L_Menu在同一个文件夹下,直接写文件名+
UriKind.Relative即可:
myFrame.Source = new Uri("LS_Account.xaml", UriKind.Relative);
补充检查:确保LS_Account.xaml文件的生成操作属性设置为
Page,否则资源不会被打包到程序集里,也会触发找不到的错误。
内容的提问来源于stack exchange,提问作者Luuke
相关产品推荐
相关产品推荐

