我們有一個應用程序應支持「批處理模式」。 所以我們想讓它從控制檯調用,就像devenv.exe一樣。如何爲控制檯和wpf使用caliburn應用程序?
該應用程序有一個WPF用戶界面,這是大多數用戶的默認界面。 我們使用caliburn.micro與主窗口的引導程序。
認爲我們應該有一個不同的引導程序。 (或根本沒有引導程序)
- 我們如何「選擇」環境是什麼?
- 引導程序開始工作之前有什麼辦法做任何事情嗎?
我們有一個應用程序應支持「批處理模式」。 所以我們想讓它從控制檯調用,就像devenv.exe一樣。如何爲控制檯和wpf使用caliburn應用程序?
該應用程序有一個WPF用戶界面,這是大多數用戶的默認界面。 我們使用caliburn.micro與主窗口的引導程序。
認爲我們應該有一個不同的引導程序。 (或根本沒有引導程序)
如果我理解你的問題正確,那麼你想運行在控制檯模式下應用或者(從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()
。
非常感謝!必須玩這個。認爲這正是我需要的。 –
@MareInfinitus歡迎您。不,我沒有,但我正在幫助這些人爲框架寫一些文檔並在這裏回答問題,所以我現在有一些經驗。 –
想想我還有更多的玩法,還有一些非常有幫助的事情,我從未接觸過。更好的文檔是一個好主意! :-D –