我的大脑遍布地图,试图立即完全理解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事件处理程序中是不是很糟糕?它真的需要在应用程序级别吗?
仔细检查App.xaml中的x:Class是否与App.xaml.cs中的名称空间/类相同。从另一个项目复制/粘贴很容易,而忘记修改它。
如果出于任何原因您都无法解决此问题,请删除App.xaml并添加Main()
一个new App().Run()
。如果这也不起作用,那么这里确实有些奇怪。
您的问题似乎与 Unity 根本无关...请确保:
YourProject.App
(在项目属性页面中)否则,我看不出有什么理由它不应该工作......
更新:只是另一个想法...尝试将其设置StartupUri
为 App.xaml,并在以下位置调用基本实现OnStartup
:
protected override void OnStartup(StartupEventArgs e)
{
container = new UnityContainer();
base.OnStartup(e);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5432 次 |
最近记录: |