0
votes

Just started to WPF with C# and VS Community 2017. Tried to run code that will change the start up window. but get the following exception.

System.IO.IOException: 'Cannot locate resource 'application_startup'.'

this code is from the App.xaml

<Application x:Class="StartUp_Window.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:StartUp_Window"
         StartupUri="Application_Startup">
<Application.Resources>

</Application.Resources>

This is from the App.xaml.cs

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;

namespace c
{
  /// <summary>
  /// Interaction logic for App.xaml
  /// </summary>
  public partial class App : Application
  {
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        // Create the startup window 
        MainWindow wnd = new MainWindow();
        // Do stuff here, e.g. to the window 
        wnd.Title = "Something else for fs";

           // Show the window 
           wnd.Show();
    }

  }
}

this is from the MainWindow.xaml

<Window x:Class="StartUp_Window.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:StartUp_Window"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>

</Grid>

this is also from the MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace StartUp_Window
{
  /// <summary>
  /// Interaction logic for MainWindow.xaml
  /// </summary>
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
        InitializeComponent();
    }
  }
}

This is the new error that comes up after changing the startupuri in App.xaml file.

Severity Code Description Project File Line Suppression State Error CS1061 'App' does not contain a definition for 'Application_Startup' and no extension method 'Application_Startup' accepting a first argument of type 'App' could be found (are you missing a using directive or an assembly reference?) StartUp_Window C:\Users\faisal\Documents\Visual Studio 2017\Projects\WPF_Tutorial\StartUp_Window\StartUp_Window\App.xaml 5 Active Error CS0246 The type or namespace name 'MainWindow' could not be found (are you missing a using directive or an assembly reference?) StartUp_Window C:\Users\faisal\Documents\Visual Studio 2017\Projects\WPF_Tutorial\StartUp_Window\StartUp_Window\App.xaml.cs 20 Active Error CS0246 The type or namespace name 'MainWindow' could not be found (are you missing a using directive or an assembly reference?) StartUp_Window C:\Users\faisal\Documents\Visual Studio 2017\Projects\WPF_Tutorial\StartUp_Window\StartUp_Window\App.xaml.cs 20 Active

2

2 Answers

4
votes

In the App.xaml, this line here:

StartupUri="Application_Startup"

should be:

Startup="Application_Startup"

Edit: As @AQuirky mentioned, you should make StartupUri="MainWindow.xaml".

1
votes

Remove the StartupUri attribute from App.xaml:

<Application x:Class="StartUp_Window.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:StartUp_Window">
    <Application.Resources>

    </Application.Resources>
</Application>

...and override the OnStartup method in App.xaml.cs:

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

        // Create the startup window 
        MainWindow wnd = new MainWindow();
        // Do stuff here, e.g. to the window 
        wnd.Title = "Something else for fs";

        // Show the window 
        wnd.Show();

    }
}

Or set the StartupUri property to the name of your window:

<Application x:Class="StartUp_Window.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:StartUp_Window"
         StartupUri="MainWindow">
    <Application.Resources>

    </Application.Resources>
</Application>

...and do nothing in App.xaml.cs.