我在一个项目中重现了一个问题,我需要在一个只有1个WPF项目的小型解决方案中使用Application.LoadComponent加载App.xaml。
我在一个单独的类中有一个应用程序入口点,它按如下方式创建应用程序:
[STAThread]
static void Main()
{
var app = new App();
var resource = new Uri("/WpfApplication1;component/app.xaml", UriKind.Relative);
Application.LoadComponent(app, resource);
app.Run(new MainWindow());
}
方法调用LoadComponent抛出异常:
未处理的类型' System.IO.IOException'发生在 PresentationFramework.dll
其他信息:无法找到资源' app.xaml'。
我无法看到我做错了什么,this答案似乎也指向了同样的解决方案。而且this也是。
程序集名称是正确的,在询问此问题之前仔细检查它。 我尝试了以下资源位置,它们都会导致相同的异常:
var resource = new Uri("/WpfApplication1;component/app.xaml", UriKind.Relative);
var resource = new Uri("/WpfApplication1;component/WpfApplication1/app.xaml", UriKind.Relative);
var resource = new Uri("/WpfApplication1;component/WpfApplication1.app.xaml", UriKind.Relative);
答案 0 :(得分:3)
将App.xaml文件的构建操作更改为Page并运行。这也可以。
var app = new App();
var resource = new Uri("/WpfApplication1;component/app.xaml", UriKind.Relative);
Application.LoadComponent(app, resource);
app.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
app.Run();