通过静态 Class 更改图像源时出现问题

Problem Changing the Imagesource via a Static Class

我在每个项目中都会遇到这个非常烦人的错误:

我有一个 class(相同的命名空间),我在其中存储对图像的引用,如下所示:

public class Res
{
     public static BitmapImage A = new BitmapImage(new Uri(@"images\A.png", UriKind.Relative));
}

当我尝试通过以下方式将元素源更改为这些静态引用之一时:

xamldefinedimage.Source = Res.A;

它什么都不做。 (当然,我将其与相应的 Dispatcher 一起附上。)

现在当我像这样分配图像源时:

xamldefinedimage.Source = new BitmapImage(new Uri(@"images\A.png", UriKind.Relative));

它工作得很好。我检查了图像属性(资源,构建时复制 -> 看起来不错)。

这个问题让我特别抓狂,因为我有一些旧项目,其中的参考设置工作得很好。我不想使用解决方法,而是使用带有静态引用的特殊 class 来保持代码最少。我真的很想深入了解并一劳永逸地了解我在这里所缺少的东西。这基本上是一个空白项目,还没有做太多。这里的问题是什么,第一种方法不起作用的潜在原因是什么?

您的问题是关于静态 class 但您没有将 Res class 定义为静态。

你的代码应该是这样的:

public static class Res
{
 public static BitmapImage A = new BitmapImage(new Uri(@"images\A.png", UriKind.Relative));
}

此外,如果您的图片在应用程序资源中,那么您的 class 应该是这样的:

public static class Res
{
 public static BitmapImage A = new BitmapImage(new Uri(@"pack://application:,,,/Images/A.png"));
}