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