【问题标题】:Unable to load app.xaml using Application.LoadComponent无法使用 Application.LoadComponent 加载 app.xaml
【发布时间】:2020-04-09 22:17:35
【问题描述】:

我在一个项目中重现了一个问题,我需要在一个只有 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);

【问题讨论】:

  • 没有任何解释的否决票?
  • 我已经找到了解决方案并支持了这个问题。我明天会发布解决方案。干杯!晚安。
  • @AnjumSKhan 哈哈,这真是悬念,整晚都在拉我的头发。我会放手,明天祈祷你的回答。提前谢谢!
  • 好的发布答案没有解释。明天将发布长答案。

标签: c# wpf xaml


【解决方案1】:

将 App.xaml 文件的 Build Action 更改为 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();

【讨论】:

  • 先生,是的,先生!这就是诀窍。我有另一个应用程序,我有完全相同的设置,并且允许我使用 App.xaml 作为 ApplicationDefinition。真的不知道为什么它在那个应用程序中工作,但另一方面真的很高兴你解决了这个烦人的问题!谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 2011-03-12
相关资源
最近更新 更多