当前位置:  开发笔记 > 运维 > 正文

如果我的应用程序没有设置StartupUri,则不会解析App.xaml文件?

如何解决《如果我的应用程序没有设置StartupUri,则不会解析App.xaml文件?》经验,为你挑选了3个好方法。

背景:我正在使用MVVM创建一个WPF应用程序,并使用DI容器来构建我的ViewModel

我的App.xaml看起来像这样:


    
        
    

MainWindow.xaml看起来像这样:


    
        
    

现在,这一切都运行正常,但是StartupUri硬编码到XAML中,我不想要.
根据我发现的几篇博文和文章的指导,我删除了StartupUri,并尝试MainWindow通过挂钩OnStartup在App.xaml.cs中创建,如下所示:

protected override void OnStartup( StartupEventArgs e )
{
    base.OnStartup(e);
    new MainWindow().Show();
}

问题是,在尝试显示窗口时应用程序崩溃,但有以下异常:

找不到名为"{serviceLocator}"的资源.资源名称区分大小写.标记文件'WpfApp; component/mainwindow.xaml'中对象'System.Windows.Data.Binding'出错'第8行第45位.

据我所知,该部分根本没有从xaml文件中读出.我可以在OnStartup中添加一些代码来以编程方式添加资源,如下所示:

Resources.BeginInit();
Resources.Add("serviceLocator", new ServiceLocator());
Resources.EndInit();

然而,这是一个丑陋的黑客,如果我想稍后在app.xaml文件中添加其他东西,并没有帮助我:-(

我应该挂钩其他一些活动吗?有没有解决的办法?



1> Nidonocu..:

而不是覆盖OnStartup,而是尝试使用事件:


        
            
        
    

代码背后:

public partial class App : Application
{
    public App()
    { }
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        // TODO: Parse commandline arguments and other startup work 
        new MainWindow().Show();
    }
}


天哪,谢谢!我以为我疯了

2> jbe..:

最简单的解决方法是定义x:Name:


        ...
    

更多信息:http://connect.microsoft.com/VisualStudio/feedback/details/472729/wpf-cannot-find-resource-defined-in-the-app-xaml-file


两个链接都断开了。

3> Ben Gribaudo..:

我遇到过类似/同样的问题.有一个VS代码生成错误,只包含一个条目且没有StartupUri属性时,有时不会插入连接到程序其余部分所需的代码.

详细信息:http : //bengribaudo.com/blog/2010/08/19/106/bug-single-application-resources-entry-ignored (免责声明 - 链接指向我的博客)


Visual Studio 2012与.NET Framework 4.5仍然有一个错误
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有