If a WPF application encounters any problems during the creation of the main window, you will be presented with a rather useless System.Windows.Markup.XamlParseException:
“Cannot create instance of ‘Window1’ defined in assembly ‘YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’. Exception has been thrown by the target of an invocation. Error in markup file ‘Window1.xaml’ Line 1 Position 9.”
The inner exception is similarly not giving much information:
{“Exception has been thrown by the target of an invocation.”}
The trick to getting to the root of the problem is simple. There are a couple ways to do so:
- Wrap the code in the constructor of the Window in a try/catch block. This will provide you with access to the actual exception and its stack trace.
public MainWindow() { try { InitializeComponent(); // other code, if any } catch(Exception ex) { // log the exception -- this is the real culprit } }
- Open the Exceptions window in Visual Studio (Debug -> Exceptions…) and check the “Common Language Runtime Exceptions” checkbox in the Thrown column. Re-run your application with the debugger attached, and the application will break on the exception that’s getting wrapped in XamlParseException.