WPF app启动问题

Dav*_*ave 6 wpf xaml startup

我的大脑遍布地图,试图立即完全理解Unity.所以我决定潜入并开始在分支中添加它以查看它需要我的位置.令人惊讶的是(或者可能不是),我只是让我的darn应用程序正确加载.

似乎正确的方法是在App.cs.中覆盖OnStartup.我从App.xaml中删除了我的StartupUri,因此它不会创建我的GUI XAML.我的App.cs现在看起来像这样:

public partial class App : Application
{
    private IUnityContainer container { get; set; }

    protected override void OnStartup(StartupEventArgs e)
    {
        container = new UnityContainer();
        GUI gui = new GUI();
        gui.Show();
    }

    protected override void OnExit(ExitEventArgs e)
    {
        container.Dispose();
        base.OnExit(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是当我启动应用程序时没有任何反应!我在container作业中放了一个断点,它永远不会被击中.

我错过了什么?App.xaml目前设置为ApplicationDefinition,但是我希望这可以工作,因为我正在查看的一些示例Unity + WPF代码(来自Codeplex)完全相同,除了它有效!

我也通过单步执行应用程序,它最终到达App.xaml的第一行.当我进入这一行时,就是当应用程序刚刚开始"运行"时,但是我没有看到任何东西(而且我的断点没有被击中).如果我在示例应用程序中执行完全相同的操作,那么单步进入App.xaml会使我进入OnStartup,这是我期望发生的事情.哎呀!

我还从头开始创建了一个新的WPF应用程序,删除了StartupUri,覆盖了OnStartup(),它也可以工作.WTH?

将Unity构造放入GUI的Window_Loaded事件处理程序中是不是很糟糕?它真的需要在应用程序级别吗?

Jul*_*ain 5

仔细检查App.xaml中的x:Class是否与App.xaml.cs中的名称空间/类相同。从另一个项目复制/粘贴很容易,而忘记修改它。

如果出于任何原因您都无法解决此问题,请删除App.xaml并添加Main()一个new App().Run()。如果这也不起作用,那么这里确实有些奇怪。


Tho*_*que 2

您的问题似乎与 Unity 根本无关...请确保:

  • 启动对象设置为YourProject.App(在项目属性页面中)
  • App.xaml 的构建操作设置为“ApplicationDefinition”

否则,我看不出有什么理由它不应该工作......


更新:只是另一个想法...尝试将其设置StartupUri为 App.xaml,并在以下位置调用基本实现OnStartup

protected override void OnStartup(StartupEventArgs e)
{
    container = new UnityContainer();
    base.OnStartup(e);
}
Run Code Online (Sandbox Code Playgroud)