如何设置默认图像?

时间:2011-05-22 19:29:29

标签: c# silverlight datagrid converter

数据网格:

<sdk:DataGridTemplateColumn>
                        <sdk:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Image Tag="{Binding photo}" MinWidth="50"  Source="{Binding photo, Converter={StaticResource ConvertNullImageKey}}"/>
                            </DataTemplate>
                        </sdk:DataGridTemplateColumn.CellTemplate>
                    </sdk:DataGridTemplateColumn>

转换器,如果值不是uri从Image Resource.no图像返回图像。但是这个位图......如何在位图上返回URI?

public class ConvertNullImage : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                try
                {
                    Uri uri = new Uri(value.ToString(), UriKind.Relative);
                    return uri;
                }
                catch { return new Uri(ImageResource.noimage); }
            }

            public object ConvertBack(object value, Type targetType, object parameter,
                                      CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }

2 个答案:

答案 0 :(得分:1)

Image.Source属性的类型不是Uri,类型为ImageSource,请参阅MSDN:

http://msdn.microsoft.com/en-us/library/system.windows.controls.image.source%28VS.95%29.aspx

在XAML中设置Image.Source时,XAML解析器会巧妙地将您的URI转换为ImageSource

所以 - 您需要在值转换器中创建BitmapImage。请参阅此相关问题:

Image UriSource and Data Binding

答案 1 :(得分:0)

Source的{​​{1}}属性需要Image,而不是URI。由于TypeConverter,这适用于xaml。您可以从路径创建一个BitmapImage,然后返回here

如果我理解正确,问题的第二部分是你想要(作为默认值)绑定到资源文件中的图像。如果是这样,这里是article on how to do that on MSDN

希望这有助于:)