How to customize startup of WPF application?

startup, wpf

Solution

You can remove the `StartupUri` attribute from the App.xaml.

Then, by creating an override for `OnStartup()` in the App.xaml.cs, you can create your new instance of your `Dispatcher` class.

Here's what my quick app.xaml.cs implementation looks like:

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

      new MyClassIWantToInstantiate();
    }
  }
}

Update

I recently discovered this workaround for a bug if you use this method to customize app startup and suddenly none of the Application-level resources can be found.

Problem

When a new WPF Application project is created, `MainWindow.xaml`, `App.xaml` and their corresponding code behind classes are automatically generated. In the `App.xaml` there is an attribute that defines which window is going to be run initially and by default, it's `StartupUri="MainWindow.xaml"` I have created a new `Dispatcher` class in the same project. At startup, I want the instance of that class `Dispatcher` to be constructed and then one of its method to run. That method would actually create and show the `MainWindow` window. So how do I modify the `App.xaml` or `App.xaml.cs` in order to make it happen? Or, if it cannot be done by `App`, how should I implement it? Thanks.

Original source

Related problems