2010-08-24 36 views
2

非常新手問題。從c#命令行中獲取字符串並將其傳遞給wpf窗口

我想覆蓋我的WPF應用程序的主,所以如果我雙擊文件,它將被加載。我的主要功能是:

[STAThread] 
    static void Main(string[] args) 
    { 
     FileConvert.App app = new FileConvert.App(); 
     app.InitializeComponent(); 

     if (args.Length > 0) 
     { 
      Window1 wnd1 = (Window1)(app.MainWindow); 
      wnd1.SetProjectFile(args[0]); 
     } 

     app.Run(); 

我的問題是,wnd1爲空。我如何訪問這個窗口,所以我可以傳遞它的文件名加載?

謝謝!

回答

5

而不是覆蓋Main方法,嘗試重寫OnStartup方法App.xaml.cs:

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     if (e.Args.Length > 0) 
      ((Window1) MainWindow).SetProjectFile(e.Args[0]); 
    } 
} 
+0

有趣...謝謝! – 380380 2010-08-24 00:08:12

+0

這不會編譯,因爲'args'沒有被定義。更深層次,是不是'args [0]'是可執行文件的名稱,而不是第一個參數? – 2010-08-24 01:11:53

+1

@Steven StartupEventArgs.Args與Main()中的參數不同。 Timwi的樣本將工作得很好(忽略args [0]是複製粘貼忽略的事實)。 – NVM 2010-08-24 01:42:40

相關問題