2012-11-16 11 views
21

新しいWPFアプリケーションプロジェクトを作成すると、MainWindow.xaml,App.xamlおよび対応するコードビハインドクラスが自動的に生成されます。 App.xamlには、最初に実行されるウィンドウとデフォルトで実行されるウィンドウを定義する属性があります。StartupUri="MainWindow.xaml"WPFアプリケーションの起動をカスタマイズする方法は?

同じプロジェクトで新しいDispatcherクラスを作成しました。起動時に、そのクラスDispatcherのインスタンスを構築し、そのメソッドの1つを実行します。その方法は実際にはMainWindowウィンドウを作成して表示します。では、どうすればApp.xamlまたはApp.xaml.csを修正するのですか?または、Appで処理できない場合は、どうすれば実装できますか?ありがとう。

答えて

38

StartupUri属性をApp.xamlから削除できます。

次に、App.xaml.csにOnStartup()のオーバーライドを作成して、Dispatcherクラスの新しいインスタンスを作成できます。

はここに私の迅速なapp.xaml.csの実装は次のようになります。

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 

     new MyClassIWantToInstantiate(); 
    } 
    } 
} 

更新

アプリの起動や突然なしをカスタマイズするには、このメソッドを使用する場合、私は最近、バグのためthis workaroundを発見のアプリケーションレベルのリソースが見つかります。

+0

はい、ありがとうございます。 – Boris

+0

MyClassIWantToInstantiate()はどのようなものであるべきかを詳しく説明できますか?私は私のWPFアプリケーションのメインウィンドウのクラスであるMainWindowを試しても何も起こりません。ロードされたイベントコードは実行されていません。 –

+0

クラスはあなたの必要が必要なものであればどんなものでもかまいません。ウィジェットを表示するには、それをインスタンス化してから、 'Show()'を呼び出して表示させる必要があります。 –

2

Startupイベント(クラスApplication) - MSDNを使用してください。

Dispatcherインスタンスの作成後、このイベントハンドラにMainWindowを表示できます。

関連する問題