如何设置默认图像

本文关键字:默认 图像 设置 何设置 | 更新日期: 2023-09-27 17:57:36

DataGrid:

<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,则从ImageResource.noimage返回iamage。但是这个位图。。。如何在位图上返回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();
            }
        }

如何设置默认图像

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。请参阅此相关问题:

图像UriSource和数据绑定

ImageSource属性需要ImageSource,而不是URI。多亏了TypeConverter,这在xaml中可以工作。您可以从路径创建一个BitmapImage并返回,如图所示。

如果我理解正确的话,问题的第二部分是您想要绑定(作为默认值)到Resource文件中的图像。如果是这样的话,这里有一篇关于如何在MSDN 上做到这一点的文章

希望这有帮助:)