Setting a source property of Image in Silverlight using converter
I have a page where I want to display images in a control Template. For this I only get the Image name to show. So I am using a converter to return BitmapImage like this:
return new BitmapImage(new Uri(value.ToString(), UriKind.RelativeOrAbsolute));
in the XAML binding i have:
Image Source="{Binding ThumbNail,Converter={StaticResource MapImagePath}}"/>
For some reason i am not able to see the image at all.
I have changed my image extension to .jpeg but still not working.
Am i doing some thing wrong or 开发者_如何学JAVAsuggest me if I am wrong. Thanks.
Modify your converter so that it returns an instance of BitmapImage
. Your converter is currently returning a string or a Uri however the actual type for the Source
property is ImageSource
.
The conversion of a string to a BitmapImage
is some magic that the XamlParser does for us but when we supply the value using a Converter we need to give it the correct type.
You can try using ImageFailed event to check if there is any exception being thrown while loading the image. Usually you get AG_E_NETWORK_ERROR if there is any network problem while loading images from internet.
I had faced this problem while running the Silverlight application from file system which is default in Visual Studio 2010 using the built in web server. I moved the hosting web application to local IIS server and then the images were visible.
First change your image property to content.[Right click to your image, go to property and change build action from Resource to content
Now suppose we have to "/Resources/Images/1.png" file.
Write code something like below in your converter.
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 ;
}
精彩评论