Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在控制台和wpf中使用caliburn应用程序?_C#_Wpf_Console_Caliburn.micro - Fatal编程技术网

C# 如何在控制台和wpf中使用caliburn应用程序?

C# 如何在控制台和wpf中使用caliburn应用程序?,c#,wpf,console,caliburn.micro,C#,Wpf,Console,Caliburn.micro,我们有一个支持“批量模式”的应用程序。 所以我们想让它可以从控制台调用,就像devenv.exe一样 应用程序有一个WPF用户界面,这是大多数用户的默认界面。 我们在主窗口中使用caliburn.micro和引导程序 我想我们应该有一个不同的引导程序。(或者根本没有引导程序) 我们如何“选择”环境是什么 在引导者开始工作之前,有什么办法可以做吗 如果我正确理解您的问题,那么您希望在控制台模式(从CMD)或具有WPF界面的UI模式下运行应用程序,对吗 我想我们应该有一个不同的引导程序。(或者根本没

我们有一个支持“批量模式”的应用程序。 所以我们想让它可以从控制台调用,就像devenv.exe一样

应用程序有一个WPF用户界面,这是大多数用户的默认界面。 我们在主窗口中使用caliburn.micro和引导程序

我想我们应该有一个不同的引导程序。(或者根本没有引导程序)

  • 我们如何“选择”环境是什么
  • 在引导者开始工作之前,有什么办法可以做吗

  • 如果我正确理解您的问题,那么您希望在控制台模式(从CMD)或具有WPF界面的UI模式下运行应用程序,对吗

    我想我们应该有一个不同的引导程序。(或者根本没有引导程序)

    您可以保留引导程序,但可能需要对其进行一些修改,使其看起来像这样:

    public class AppBootstrapper : BootstrapperBase
    {
    
         public AppBootstrapper()
         {
             Start(); // THIS IS WHAT CAUSES THE FRAMEWORK TO INITIALIZE
         }
    
         protected override void Configure()
         {  
             // DIFFERENT CONFIGURATION GOES HERE
         }
    
         protected override object GetInstance(Type service, string key)
         {
             // DI CONTAINER RELATED CONFIGURATION
         }
    
         protected override IEnumerable<object> GetAllInstances(Type service)
         {
             // DI CONTAINER RELATED CONFIGURATION
         }
    
         protected override void BuildUp(object instance)
         {
             // DI CONTAINER RELATED CONFIGURATION
         }
    
         protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
         {
             // ANY CUSTOM BEFORE-START CUSTOMIZATION OR PROCESSING CAN TAKE PLACE HERE
             DisplayRootViewFor<SPECIFIY_ROOT_VIEW_MODEL_HERE>(); // THIS IS WHAT DISPLAYS THE MAIN WINDOW, IF YOU DON'T CALL THIS NO UI WILL BE SHOWN
         }
    }
    
    公共类AppBootstrapper:BootstrapperBase
    {
    公共AppBootstrapper()
    {
    Start();//这就是导致框架初始化的原因
    }
    受保护的覆盖无效配置()
    {  
    //这里有不同的配置
    }
    受保护的覆盖对象GetInstance(类型服务,字符串键)
    {
    //DI容器相关配置
    }
    受保护的重写IEnumerable GetAllInstances(类型服务)
    {
    //DI容器相关配置
    }
    受保护的覆盖空洞堆积(对象实例)
    {
    //DI容器相关配置
    }
    启动时受保护的覆盖无效(对象发送方,System.Windows.StartupEventArgs e)
    {
    //任何启动前自定义或处理都可以在此处进行
    DisplayRootViewFor();//这是显示主窗口的内容,如果不调用此选项,则不会显示任何UI
    }
    }
    
    我们如何“选择”环境是什么

    在上述引导程序中显示的
    OnStartup()
    覆盖中,在调用
    DisplayRootViewFor
    之前,您可以通过调用获取命令行参数列表,然后也许可以要求希望在批处理模式下工作的用户指定参数,基于此,您可以或不能调用
    DisplayRootViewFor
    来显示主窗口

    在引导者开始工作之前,有什么办法可以做吗

    是的,您最好可以在
    OnStartup()
    方法中执行此操作,或者如果您愿意,也可以在
    Configure()
    方法中执行此操作


    注意:除非您在构造函数中调用
    Start()
    ,否则不会调用
    Configure()
    onstart()

    非常感谢!我得好好玩玩。我想这正是我所需要的。@MareInfinitus不客气。不,我没有,但我正在帮助大家为框架编写一些文档,并在这里回答问题,因此我现在有了一些经验。我想我必须多玩玩,caliburn中还有一些非常有用的东西,我从未接触过。更好的文档是一个好主意!:-D