web-dev-qa-db-ja.com

WPFアプリケーションの起動をカスタマイズする方法は?

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

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

25
Boris

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

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

App.xaml.csの簡単な実装は次のようになります。

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

      new MyClassIWantToInstantiate();
    }
  }
}

更新

私は最近、この方法を使用してアプリの起動をカスタマイズすると、突然アプリケーションレベルのリソースが見つからない場合にバグの この回避策 を発見しました。

45
Eric Olsson

Startupイベント(クラスApplication)を使用してみてください- [〜#〜] msdn [〜#〜]

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

2
mveith