BitmapImage UriSource is a stream, i think, and there isn't a built in converter for it.
WPF has built in converters for certain common bindings. If you bind the Image's Source to a string value, underneath the hood WPF will use a value converter to convert the string to a URI, and get the BitmapImage from that.
So if instead you did this:
<Image Source="{Binding ImageSource}" />
It would work (if the ImageSource property was a string representation of a valid uri to an image)
You can of course roll your own, and in Silverlight you need to because of issues the Image control has with Bindings:
public sealed class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
try
{
return new BitmapImage(new Uri((string)value));
}
catch
{
return new BitmapImage();
}
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}