2012-08-01 66 views
27

開始WPF我目前正在開發的是做一些文件操作的應用程序,我希望能夠通過控制檯或通過UI做操縱(我選擇了WPF)。如何基於參數

我非常想說:(僞)

if (Environment.GetCommandLineArgs().Length > 0) 
{ 
    //Do not Open WPF UI, Instead do manipulate based 
    //on the arguments passed in 
} 
else 
{ 
    //Open the WPF UI 
} 

我讀過有關程序啓動WPF窗口/應用等幾種不同的方式:

Application app = new Application(); 
app.Run(new Window1()); 

但我我不完全確定我想將它插入控制檯應用程序。

有沒有人對我怎樣才能做到這一點的最佳做法或建議?主要的處理功能在我創建的Helper類中。所以基本上我不是一個靜態的啓動方法(如標準控制檯應用程序創建),或取決於。

回答

75

通過在應用類有一個事件「啓動」,你可以用它的參數的用戶界面來訪問輔助類。它爲您提供通過命令提示符提供的參數。下面是MSDN一個例子:

的App.xaml

<Application x:Class="WpfApplication99.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Startup="App_Startup"> 

App.xaml.cs

我希望這將有助於。

+3

這是正確的做法。請參閱http://msdn.microsoft.com/en-us/library/system.windows.application.startup.aspx – Eugene 2012-08-02 02:41:33

+5

除了上面的建議,我相信值得注意的是,您需要刪除StartupUri屬性App.xaml(如果存在)。如果你不這樣做,你會產生兩個窗口實例。 – Tada 2012-08-02 03:03:02

15

有2個選項可以獲得命令行參數
1)如果你想讀取參數OnStartup。這對args的全球訪問非常有用。

覆蓋OnStartupApp.xaml.cs並查看StartupEventArgs類的Args屬性。

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     foreach (string arg in e.Args) 
     { 
      // TODO: whatever 
     } 
     base.OnStartup(e); 
    } 
} 

2)另一種簡單的方法是從環境對象中讀取參數。

Environment.GetCommandLineArgs();

這可以從應用程序的任何地方使用,如從Form/Page也可以。