无法在代码中设置图片源

4

有很多关于在代码后台设置图像源的问题和答案,例如这个通过代码设置WPF图像源。

我按照所有这些步骤操作,但仍然无法设置图像。我使用VS2010中的WPF C#编码。我把所有的图像文件都放在一个名为“Images”的文件夹下,并将所有图像文件设置为始终复制。并且生成操作设置为资源,如文档所指示。

我的代码如下。我在XAML中设置了dog.png,然后在代码后台将其更改为cat.png

// my XAML
<Image x:Name="imgAnimal" Source="Images/dog.png" />

// my C#
BitmapImage img = new BitmapImage();
img.UriSource = new Uri(@"pack://application:,,,/FooApplication;component/Images/cat.png");
imgAnimal.Source = img;

然后我得到了一个空的、空白的、毫无意义的图像。我不理解为什么.NET让设置图像变得如此复杂。 [编辑] 所以以下内容有效。
imgAnimal.Source = new BitmapImage(new Uri(@"pack://application:,,,/FooApplication;component/Images/cat.png"));

代码可以运行,但我看不出两个代码之间有任何区别。为什么之前的不起作用而后者却可以?对我来说,它们是一样的。

1个回答

12

尝试以下操作:

imgAnimal.Source = new BitmapImage(new Uri("/FooApplication;component/Images/cat.png", UriKind.Relative));

默认的UriKindAbsolute,你应该使用Relative

[编辑]

使用BeginInitEndInit

BitmapImage img = new BitmapImage();
img.BeginInit();
img.UriSource = new Uri(@"pack://application:,,,/FooApplication;component/Images/cat.png");
img.EndInit();
imgAnimal.Source = img;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接