應(yīng)用程序以 Main 方法為入口點(diǎn),如果為 Main 方法指定一個(gè) string[] 類型的參數(shù),在程序運(yùn)行時(shí),這個(gè)參數(shù)會(huì)獲取到傳遞給應(yīng)用程序的命令行參數(shù)。

而 WPF 應(yīng)用程序比較特殊,因?yàn)樵赩S中包含一些生成的的代碼,因此,Main 方法所在的代碼文件被隱藏了(文件名為App.g.cs,g 表示生成的意思),雖然在項(xiàng)目的obj目錄下能找到這個(gè)文件,但是直接在生成的文件中編寫代碼是沒(méi)有意義的,下次生成時(shí)就會(huì)覆蓋掉。

因此,在WPF應(yīng)用程序中,應(yīng)該將App類視為入口點(diǎn),可以在App類中處理一些程序初始化的事情。

 

其實(shí),在.net 框架中,Environment 類有個(gè)靜態(tài)的 GetCommandLineArgs 方法,它的好處是可以在程序的任意代碼處獲取傳遞給程序的命令行參數(shù)。所以,在WPF應(yīng)用程序中,你依然可以調(diào)用 GetCommandLineArgs 方法來(lái)獲取命令行參數(shù),不過(guò),有一點(diǎn)得注意,GetCommandLineArgs 方法所返回的字符串?dāng)?shù)組中,第一個(gè)元素是當(dāng)前程序的全路徑,從第二個(gè)元素起才是命令行參數(shù)。

比如,你可以這樣:

    string[] pargs = Environment.GetCommandLineArgs();

 

除了上述萬(wàn)能方法外,特定于 WPF ,框架也提供了專門的方案。

Application 類用于管理 WPF 應(yīng)用程序相關(guān)的各種數(shù)據(jù),它有一個(gè) Startup 事件,當(dāng)應(yīng)用程序啟動(dòng)時(shí),這個(gè)事件會(huì)發(fā)生,我們可以在這個(gè)事件中做一些初始化工作,比如分析命令行參數(shù),實(shí)例化要顯示的窗口等。其中,事件參數(shù) e (類型StartupEventArgs),有一個(gè) Args 屬性,是一個(gè)字符串?dāng)?shù)組,里面所包含的就是命令行參數(shù)。

網(wǎng)友評(píng)論