【发布时间】:2010-05-20 14:55:41
【问题描述】:
我的大脑现在正试图完全理解 Unity。所以我决定潜入并开始将它添加到一个分支中,看看它会把我带到哪里。令人惊讶的是(或者可能不是),我只是让我的应用程序正确加载。
似乎正确的方法是覆盖 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);
}
}
问题是当我启动应用程序时没有任何反应!我在container 赋值处放了一个断点,它永远不会被命中。
我错过了什么? App.xaml 当前设置为 ApplicationDefinition,但我希望这可以工作,因为我正在查看的一些示例 Unity + WPF 代码 (from Codeplex) 做了完全相同的事情,只是它可以工作!
我还通过单步启动了该应用程序,它最终到达了 App.xaml 中的第一行。当我进入这一行时,应用程序刚刚开始“运行”,但我什么也没看到(而且我的断点没有被命中)。如果我在示例应用程序中执行完全相同的操作,则进入 App.xaml 会使我直接进入 OnStartup,这正是我所期望的。啊!
我还刚刚从头开始创建了一个新的 WPF 应用程序,删除了 StartupUri,覆盖了 OnStartup(),它也可以工作。 WTH?
仅将 Unity 构造放在我的 GUI 的 Window_Loaded 事件处理程序中是不是一件坏事?它真的需要在应用级别吗?
【问题讨论】: