3

通常,我只是 App.xaml 资源中的引导程序,但对于我正在构建的应用程序,我需要在其他地方开始执行代码,然后在完成初始化代码后启动引导程序。

如何启动引导程序?

我将 App.xaml 设置为调用函数,然后这样做:

using System.Windows;

namespace WpfApplication9
{
    public partial class App : Application
    {
        private AdminBootstrapper b;

        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            //DO initialization

            b = new AdminBootstrapper();
            b.Start();
        }
    }
}

当我运行时,什么也没有发生,我的视图也没有出现。我知道视图/视图模型可以工作,因为如果我将引导程序放在 App.xaml 的资源部分中,它就会出现。

我在这里做错了什么?

4

3 回答 3

2

使用Initialize()方法而不是Start(). 我遇到了同样的错误并在互联网上搜索并找到了一篇说要改用的帖子Initialize()。我在 Caliburn.Micro 文档中的示例应用程序上进行了尝试,它对我有用。

于 2014-07-20T20:06:50.380 回答
0

这不是使用引导程序的“正确”方式,引导程序是您进行您所说的设置的地方。关键是要提供一个地方,Caliburn.Micro 知道你要设置。没有看到你的引导程序虽然不可能知道什么是错的。

在调用 Configure 之后,才会加载根 ViewModel。这是您的可扩展点。如果您需要进行复杂的配置,您可以在这里调用几个覆盖,然后派生一个公开这些方法的类。

一般来说,虽然你需要提供更多关于你在做什么的信息,然后我才能给你一个具体的食谱。

于 2013-05-13T08:56:11.207 回答
0

也许不是正确的方法(想从标记中删除它)但是,这段代码似乎仍然有效......

public partial class App : Application
{
    MyBootstrapper _bootstrapper;

    protected override void OnStartup(StartupEventArgs e)
    {
        _bootstrapper = new MyBootstrapper();   
        base.OnStartup(e);
    }
}

public class MyBootstrapper : BootstrapperBase
{
    public MyBootstrapper()
    {
        Start();
    }

    protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
    {
        DisplayRootViewFor<ShellViewModel>();
    }
}
于 2014-03-26T08:49:40.703 回答