2013-07-30 58 views
2

我們有一個應用程序應支持「批處理模式」。 所以我們想讓它從控制檯調用,就像devenv.exe一樣。如何爲控制檯和wpf使用caliburn應用程序?

該應用程序有一個WPF用戶界面,這是大多數用戶的默認界面。 我們使用caliburn.micro與主窗口的引導程序。

認爲我們應該有一個不同的引導程序。 (或根本沒有引導程序)

  1. 我們如何「選擇」環境是什麼?
  2. 引導程序開始工作之前有什麼辦法做任何事情嗎?

回答

3

如果我理解你的問題正確,那麼你想運行在控制檯模式下應用或者(從CMD)或UI模式下使用WPF界面,正確的?

認爲我們應該有一個不同的引導程序。 (或無引導程序在所有)

你可以保持引導程序,但是你可能需要稍作修改,所以它看起來是這樣的:

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 
    } 
} 

我們如何「選擇」是什麼環境是?

在引導程序和DisplayRootViewFor呼叫之前,您可以獲得命令行參數的清單上面顯示的OnStartup()覆蓋致電Environment.GetCommandLineArgs(),然後也許你可以問問誰想要在批處理模式下工作,以指定的用戶論據,並根據您可以或不可以撥打DisplayRootViewFor來顯示主窗口。

引導程序開始工作之前有什麼辦法做任何事嗎?

是的,你可以做的是,在OnStartup()方法最好,或者如果您在Configure()方法希望。

注:兩個Configure()OnStartup()不會被調用,除非你在構造函數中調用Start()

+0

非常感謝!必須玩這個。認爲這正是我需要的。 –

+0

@MareInfinitus歡迎您。不,我沒有,但我正在幫助這些人爲框架寫一些文檔並在這裏回答問題,所以我現在有一些經驗。 –

+1

想想我還有更多的玩法,還有一些非常有幫助的事情,我從未接觸過。更好的文檔是一個好主意! :-D –

相關問題