43

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?

Chrisjan Lodewyks
  • 1,227
  • 1
  • 13
  • 19
  • 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 Oct 11 '12 at 06:31

28 Answers28

53

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.

Chrisjan Lodewyks
  • 1,227
  • 1
  • 13
  • 19
  • Was getting this as well, very strange. I can add an image with an icon, but if I set the image source to an icon with a style trigger, i get this problem... – Andy Feb 27 '13 at 13:24
  • 4
    This is strange. I changed my project name, and my assembly name. Then I obtained the msg that the `IndexConverter` class doesn't exist in my namespace (error in `XAML`) - but everything was fine. Then I had found that post. It helped. The problem was with the program icon in the other file (that didn't prompt me with error)... Thanks! Have a nice day for that:D – Nickon Jul 09 '13 at 14:56
  • 1
    Thanks Nickon, worked for me. My icons had the assembly name hardcoded in the path, I changed it to relative to the application and it solved the issue. – Thomas Jul 23 '13 at 03:01
  • 1
    I misspelled Resources: Icon="./Resourses/cmd_IDI_APPICON.ico". That hurts! Seems like it's all about icons. – HericDenis Jun 03 '14 at 13:28
  • 1
    Instead of adding try..catch, to see inner exception you can go to Debug>Windows>Locals – Michael_S_ Apr 24 '16 at 09:18
  • I had a forward slash instead of a backslash in my icon path Resouces/Icon.ico threw error, Resources\Icon.ico did not. – tinmac Jun 21 '16 at 00:55
  • Thanks Tino, your answer fixed mine. Also, I just used a website to convert my .png to an .ico, and it asked if I wanted my .ico for Windows 7 or later, or WinXP and earlier. I'm guessing from that, Win7 icons are not 100% XP compatible. – Eric Jan 11 '17 at 23:11
  • I got this on Windows 10 in a WPF project after moving a form to another namespace. The form referenced an image that I didn't move, which is detected by the form designer but not during runtime. – person27 Jan 22 '17 at 19:04
  • After getting this error, I simply added the `try-catch` block around the `InitializeComponent();` statement, recompiled, and then it worked (didn't throw exception and icons were correctly shown). Weird. – Nikola Novak Mar 23 '21 at 11:58
29

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

Kevin
  • 2,684
  • 6
  • 35
  • 64
12

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.

user2125523
  • 131
  • 1
  • 2
9

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

<Button Command="MyCommand" />

instead of

<Button Command="{Binding MyCommand}" />
McNos
  • 191
  • 2
  • 7
7

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

Ludwo
  • 6,043
  • 4
  • 32
  • 48
6

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

Lahiru Jayaratne
  • 1,684
  • 4
  • 31
  • 35
soheil momeni
  • 61
  • 1
  • 1
3

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.

Eternal21
  • 4,190
  • 2
  • 48
  • 63
3

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

Amit K.S
  • 299
  • 3
  • 9
2

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">
Kamal Hasan
  • 291
  • 2
  • 8
1

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

Owen
  • 728
  • 7
  • 17
1

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.

Elyas
  • 11
  • 1
1

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.

Will
  • 11
  • 1
1

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...

Buzzwig
  • 460
  • 4
  • 10
1

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.

nostafict
  • 51
  • 1
  • 1
  • 5
1

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

Birkan AYDIN
  • 159
  • 1
  • 4
1

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.

Mo0rteza
  • 320
  • 6
  • 18
1

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"
Reap
  • 1,047
  • 13
  • 16
  • +1 - I ran into this specifically because my icon file had not been marked as a "Resource" -- it's an easy mistake to make, and yet the error message is not very clear. Just said it `cannot locate resource 'icon.ico'`. Hope this helps someone else. – Brian Lacy Apr 13 '20 at 14:45
1

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" >
ChrisG
  • 116
  • 6
0

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

OhBeWise
  • 5,350
  • 3
  • 32
  • 60
0

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

0

In my case, I got this error when I had

<Border Background="eeeeee">

instead of

<Border Background="#eeeeee">

(notice the missign #)

Josh
  • 677
  • 2
  • 9
  • 18
0

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

Erik
  • 894
  • 1
  • 8
  • 25
0

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.

0

I got the same error message, then I find this solution : Image not displaying at runtime C# WPF

Find your folder:Go to properties of the added image, set Build Action =>as Resource and Copy To Output Directory =>as Copy if newer.

0

In My case I have wrote a border tag with height property then i had to remove the value leaving the property like this

<Border Background="{StaticResource MainBackgroundBrush}" BorderThickness="1" Height="">
</Border>

The Compiler gave me the same error but the IDE have no problem so after some hard search i have found it. so make sure every property is properly set. I hope this would be useful for anyone.

0

I just select my png icon here, not with the list. And it is done.

Select here

ertbaran
  • 31
  • 4
0

I know it is old but I encounter same error in Visual studio 2022, windows 10. What I have to do is go to the image file in windows explorer then click it with right mouse button. Next go to properties and tick "unblock" then apply. I click "play button" and it still didn't work(same error in VS) so I have to click rebuild and then click "start button" again. Also I change format of the file from .jpg to .png but I don't know it is matter because I did that before unblocking the file.

-2

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)