40
votes

The exception in the title is thrown when I open a window in WPF, the strange thing is that this does not happen on my Windows 7 development machine nor does it happen when it is deployed on Windows 7.

I only get this error on Windows XP, and only the second time that I open the window.

Here is the code to open the window:

ReportParametersWindow win = null;

      bool canOverWrite = _shownReports.Contains(rpt.FriendlyName);

      if (!(canOverWrite))
        win = new ReportParametersWindow(rpt.FriendlyName, rpt.ReportParameters, canOverWrite);
      else
        win = new ReportParametersWindow(rpt.FriendlyName, (container.ParametersWindow as ReportParametersWindow).Controls, canOverWrite);

      win.ShowDialog();

And the XAML for the window:

<Window xmlns:my="clr-namespace:MHA.Modules.Core.Controls;assembly=MHA.Modules.Core"  
    x:Class="MHA.Modules.Reports.Views.ReportParametersWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Parameters" Height="500" Width="600" MinWidth="500" MaxHeight="500" 
    Icon="/MHA.Modules.Reports;component/Images/Parameters.ico" SizeToContent="WidthAndHeight" 
    WindowStartupLocation="CenterScreen"
    xmlns:odc="clr-namespace:Odyssey.Controls;assembly=Odyssey" Closed="Window_Closed">

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="40"/>
    </Grid.RowDefinitions>
    <ScrollViewer Grid.Row="0" Name="ScrollViewer1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" CanContentScroll="True">
        <StackPanel Name="ParameterStack">
            <my:LocationCtl Text="Parameters for report - " Name="loc"/>
        </StackPanel>
    </ScrollViewer>
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <CheckBox ToolTip="This will replace the first report of the same type that was shown." Name="chkOverwrite" Content="Overwrite old" VerticalAlignment="Center" Margin="5,0"></CheckBox>

        <Button Grid.Column="2" HorizontalAlignment="Right" Margin="5,0" Height="30" Style="{StaticResource DionysusButton}" Width="100" IsDefault="True" Click="Button_Click">
            <StackPanel Orientation="Horizontal">
                <Image Source="/MHA.Modules.Reports;component/Images/Success.png"></Image>
                <TextBlock Margin="5,0" Text="Accept" VerticalAlignment="Center"></TextBlock>
            </StackPanel>
        </Button>
    </Grid>
</Grid>

Does anyone have suggestions?

24
Try to comment out as much code as you can and still throw the exception. The idea is to find the single thing that is essential to cause this exception to be thrown.Rafal

24 Answers

50
votes

The solution is quite a weird one but I have it figured out.

I realized that the error was occurring on the InitializeComponent() of the window, I then added a try catch to the constructor and showed the InnerException of the Exception.

The error that I received is "Image format not recognized".

I have no idea why this happens only on XP and the second time that the window is shown but by replacing my .ico with a .png the problem was resolved.

Hope this helps someone.

26
votes

I just ran into this issue as well... I know this is old, but what I had to end up doing was set the images to Resource, and Copy Always... only by browsing my /bin/Debug folder did I realize that the images were not at a valid path location

11
votes

This problem can also occur if the required image is not available at the specified location. So Check the inner exception and add any image that might have been missed or misspelled.

8
votes

I got this error because my Command Binding of a Button was wrong:

<Button Command="MyCommand" />

instead of

<Button Command="{Binding MyCommand}" />
6
votes

You Should first Import Image to your project Solution Explorer - Show All

enter image description here

then Right Click on the image and select Include

enter image description here

Now Use end

5
votes

In my case the root cause was wrong BuildAction property on all images. I fixed it by changing BuildAction from Content to Resource.

2
votes

I got this exception after moving my Resource Dictionary from root of my application to a subdirectory. In my case the problem were Image paths inside my Style setters inside the dictionary. After I preceded them with a forward slash '/', the application started to work again. If you're having a similar problem, open the resource dictionary, and the error will be highlighted with the blue 'squiggly' line.

2
votes

In my case, I have added 'WpfToolkit' refrence to my module, and there is no need. After deleting this reference, everything was ok. Strange!

2
votes

Just go to Project>[Your Project Name] Settings and set your .ico file as icon now your .ico file is mentioned in your manifest file and you can simply include your .ico file in your XAML file using

Icon="[icon file name].ico"

<Window  x:Class="[Your project's name].MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="" Height="500" Width="720"
     Icon="[your icon's name].ico">
1
votes

In my case, I found the mew added icon(image) file is not added into my project. It is resolved after I added these new image files into my project, not just file copy.

1
votes

In my case the files existed on disk but were not referenced in the project. I added them to the project but the error persisted despite reloading the solution and restarting Visual Studio.

I changed the references to an existing file that was already in the project and it ran fine (albeit with the wrong graphic). I then changed it back to the original reference and it ran fine again but with the correct image. Presumably the error was getting cached somehow until it was flushed out of the system...

1
votes

Remove the "WPFToolkit" reference from your cs.proj file.

<Reference Include="WPFToolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

It should do the trick.

1
votes

copy and paste the file name is changed. that's why I get this error.

1
votes

well, in my case I added the new photos to the image Folder in FileExplore while image folder was added to the project while ago. and there wasn't any problem with the image path in the project. but when I build the project I face to the same error. then I add those new photos to project by right click on the image folder and add the existing item and selected new photos. then I cleaned the solution and build it again.

1
votes

There are many ways to cause this issue. Since the exception isn't specific. Here is a list of solutions to try from this thread.

Firstly, you can try/catch the InitializeComponent() call which is throwing the exception to get more details about what happened.

  • If the image is an icon (.ico) file use an image (.png) or equivalent instead
    • In some cases .ico files are problematic - I was using .NETCore
  • Make sure your image file has a build action of Resource or Embedded Resource

    The resource files described in this section are different than the resource files described in XAML Resources and different than the embedded or linked resources described in Manage Application Resources (.NET). - MSDN

  • Ensure your reference to the file is spelled and pathed correctly

    • Example: "/Resources/logo.png" if you have a folder at the project level
      • Notice the prefix /.
  • Colors codes in the xaml file missing the hashtag prefix "#000FE0"
1
votes

In my case, another program was using the image and somehow was blocking the access. I mad a copy and this worked.

<Window
.....
     Height="450" Width="400" 
     Icon="../Resources/SettingsCopy.png" >
0
votes

To improve upon user2125523:

If you've added the image to the project and checked and double checked that the file spelling is correct, try renaming the image to mirror a different existing image. Build/run, then put your image file name back and build/run again.

For example: My original code kept throwing the OP error on LargeImage="/img/32/delete.order.png" even though this file exists.

<telerik:RadRibbonButton Text="Object Properties" Size="Large"
    Name="PropertiesButton" IsTabStop="True"
    telerik:ScreenTip.Description="Get object properties" 
    Click="PropertiesButton_Click"
    LargeImage="/img/32/properties.png" 
    SmallImage="/img/16/properties.png" />
<telerik:RadRibbonButton Text="Reset Tab Order" Size="Large" 
    Name="ClearTabOrderButton" IsTabStop="True"
    telerik:ScreenTip.Description="Reset tab order of all fields"
    Click="ClearTabOrder_Click"
    LargeImage="/img/32/delete.order.png" 
    SmallImage="/img/16/delete.order.png" />

So, I changed LargeImage="/img/32/delete.order.png" to LargeImage="/img/32/properties.png", ran the program, and changed it back to "/img/32/delete.order.png". Finally the error was gone.

FYI VS2012.3 Win8.1Preview

0
votes

I had the same issue and to add an image to you solution you have to do it through the wizzard. In the solution explorer -> right click on the appropriate folder-> add existing Item -> and then browse to your image. That worked for me. Hope this helps. Thanks for you answers.

0
votes

Try to set Build Action of Property of Image file as Resource.

0
votes

Exception used to occur within constructor. Button's command binding was incorrect. Eg: <Button Command="MyCommand" />--> Wrong <Button Command="{Binding MyCommand}" />--> Right

0
votes

In my case, I got this error when I had

<Border Background="eeeeee">

instead of

<Border Background="#eeeeee">

(notice the missign #)

0
votes

I found "UpdateSourceTrigger=Pr" somewhere in my XAML.

Must have happened during editing.

Compiling went OK, no error then whatsoever.

Setting a BreakPoint in Application_DispatcherUnhandledException in app.xaml.cs revealed the error.

Corrected to "UpdateSourceTrigger=PropertyChanged" and the world was at it should have been.

I work on Win 10 Pro, VS2017

0
votes

I encountered this error and figured out that the Image Source path format has a mistake. a forward slash / was added as follows:

Source="/TestProject;component/Images//hat_and_book.png

I removed that extra slash and the error had gone.

-2
votes

it is caused by Non-standard tag option in xaml to find it set InitializeComponent(); Function in - try mode - like this

 try { 
InitializeComponent(); 
} 
catch (Exception ex) { 
MessageBox.Show(ex.Message.ToString()); 
}

now MessageBox(( show line number with incorrect setting in control .axml file.(it just show first incorrect line tag error after Corrected it then run app again and see next one)