加载图像时出现TypeInitializationException

时间:2014-07-29 17:28:30

标签: c# wpf image

我想做什么:

我想在WPF中看到一个图像。

问题:

当我尝试加载图片时,我得到一个TypeInitializationException

我试图解决这个问题:

我实施了try-catch。如果第一个Image(我实际想要的Image)抛出一个TypeInitializationException,我会看到另一个Image(仅用于测试)。第二个Image(来自catch块)可见,但我想看到的Image不是。两个Image都具有属性"embedded Resource"Imagenamespace位于同一个Travelagency.RessourcesMenu),但位于不同的子目录中(TravelDataFilterMenuIconsTravelDataFilterVM.cs)。

C#代码:

MenuEntry money = null; try { money = new MenuEntry(Guid.NewGuid(), Travelagency.Ressources.TravelDataFilterMenuIcons.TravelDataFilterMenuIcon.Euro); } catch(TypeInitializationException ex) { money = new MenuEntry(Guid.NewGuid(), Travelagency.Ressources.Menu.MenuIcon.MenuImage); }

TravelDataFilterMenuIcon.cs

public static readonly BitmapImage Euro = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.TravelDataFilterMenuIcons.euro.png"); (不起作用)

Menu.cs

public static readonly BitmapImage MenuImage = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.Menu.menu5.png"); (确实有用)

Image

修改

我发现每个Menu.cs都可以从Image加载,但TravelDataFilterVM.cs不能加载Image。问题不在于classclasses的路径或其他内容。所以这里有TravelDataFilterVM.cs

using System.Windows.Media.Imaging; namespace Travelagency.Ressources.TravelDataFilterMenuIcons { public class TravelDataFilterMenuIcon { private TravelDataFilterMenuIcon() { } public static readonly BitmapImage Euro = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.TravelDataFilterMenuIcons.euro.png"); public static readonly BitmapImage Fuenfzigeuro = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.TravelDataFilterMenuIcons.fuenfzigeuro.png"); public static readonly BitmapImage Hunderteuro = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.TravelDataFilterMenuIcons.hunderteuro.png"); } } (不起作用)

Menu.cs

using System.Windows.Media.Imaging; namespace Travelagency.Ressources.Menu { public class MenuIcon { private MenuIcon() { } public static readonly byte[] MENU = ImageLoader.LoadImageAsByteArray("Travelagency.Ressources.Menu.menu5.png"); public static readonly BitmapImage MenuImage = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.Menu.menu5.png"); } } (确实有用)

{{1}}

1 个答案:

答案 0 :(得分:-1)

现在它有效!我不知道为什么。我一无所获。我甚至没有重新启动任何东西。