2011-07-01 48 views
0

我有一个页面,我想在控制模板中显示图像。为此,我只显示图像名称。在XAML使用转换器在Silverlight中设置图像的源属性

return new BitmapImage(new Uri(value.ToString(), UriKind.RelativeOrAbsolute)); 

结合我有::所以我用一个转换器返回的BitmapImage这样

Image Source="{Binding ThumbNail,Converter={StaticResource MapImagePath}}"/> 

出于某种原因,我没能看到图像的。

我已将图像扩展名更改为.jpeg,但仍无法正常工作。

我在做一些错误的事情或建议我,如果我错了。 谢谢。

+0

图像是否作为资源建立在您的项目中? – anivas

+0

我不确定我的项目中资源是什么意思。但是我拖放到我的XAMl页面上。 – user695663

+0

如果将生成操作设置为资源 – anivas

回答

1

修改您的转换器,使其返回BitmapImage的实例。您的转换器当前正在返回字符串或Uri,但Source属性的实际类型为ImageSource

将字符串转换为BitmapImage是XamlParser为我们做的一些魔术,但是当我们使用Converter提供值时,我们需要给它一个正确的类型。

+0

即使我改变它retun BitMapImage实例它不工作 – user695663

0

您可以尝试使用ImageFailed事件来检查加载图像时是否有任何异常被抛出。如果在从互联网加载图像时出现网络问题,通常会得到AG_E_NETWORK_ERROR。

我在使用内置Web服务器从Visual Studio 2010中默认运行Silverlight应用程序时遇到了此问题。我将托管Web应用程序移至本地IIS服务器,然后可以看到图像。

0
  1. 首先改变你的图像属性的内容。[右键单击你的形象,去从资源属性,并更改生成操作内容

  2. 现在假设我们以“/资源/图片/ 1 .png“文件。

在你的转换器中写下如下所示的代码。

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
{ 
    BitmapImage bitmap = new BitmapImage(); 
    Uri uri = new Uri(@"Resources/Images/1.png", UriKind.Relative); 
    bitmap .SetSource(Application.GetResourceStream(uri).Stream); 
    return bitmap ; 
} 
相关问题