.Net6 WPF 报错:不具有由 URI“xxx”识别的资源
Posted lishuangquan1987
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.Net6 WPF 报错:不具有由 URI“xxx”识别的资源相关的知识,希望对你有一定的参考价值。
跟之前的文章一样
在做WPF开发的时候,经常遇到如下错误:不具有由 URI“xxx”识别的资源 或者 The component ‘XXX’ does not have a resource identified by the URI
根本原因暂未找到。但是可以通过如下办法解决:
有哪位大神找打根本原因,欢迎留言给我,不胜感激
新建一个View的拓展方法:
public static class Extension
/// <summary>
/// wpf 出现 组件“xxx”不具有由 URI“xxx”识别的资源。错误时的解决办法
/// </summary>
/// <param name="userControl"></param>
/// <param name="baseUri"></param>
public static void LoadViewFromUri(this FrameworkElement userControl, string baseUri)
try
var resourceLocater = new Uri(baseUri, UriKind.Relative);
var exprCa = (PackagePart)typeof(System.Windows.Application).GetMethod("GetResourceOrContentPart", BindingFlags.NonPublic | BindingFlags.Static).Invoke(null, new object[] resourceLocater );
var stream = exprCa.GetStream();
var uri = new Uri((Uri)typeof(BaseUriHelper).GetProperty("PackAppBaseUri", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null, null), resourceLocater);
var parserContext = new ParserContext
BaseUri = uri
;
typeof(XamlReader).GetMethod("LoadBaml", BindingFlags.NonPublic | BindingFlags.Static).Invoke(null, new object[] stream, parserContext, userControl, true );
catch (Exception)
//log
在View的构造函数中注释掉InitializeComponent
方法,使用拓展方法:
public LoginView(IContainerProvider container)
//InitializeComponent(); //注释掉
this.LoadViewFromUri("/Test.ClientUI;component/Views/LoginView.xaml");
this.DataContext = container.Resolve<LoginViewModel>((typeof(LoginView),this));
问题追踪:
https://github.com/dotnet/wpf/issues/4494
https://github.com/dotnet/wpf/issues/1700
以上是关于.Net6 WPF 报错:不具有由 URI“xxx”识别的资源的主要内容,如果未能解决你的问题,请参考以下文章
相对路径获取项目文件 及报错 No mapping found for HTTP request with URI XXX in DispatcherServlet with name ‘spring