我想在列表视图中显示图像,但是我不知道该怎么做。
我的Guest类具有方法GetGuestImage(),它为我返回了绝对路径。
当该文件存在时,应加载该文件,而在不存在时,应加载一个占位符图像。

我怎么能意识到这一点?

<ListView x:Name="listview">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn DisplayMemberBinding="{Binding GetGuestImage()}" Header="Image" />
                            <GridViewColumn DisplayMemberBinding="{Binding Vorname}" Header="Vorname" />
                            <GridViewColumn DisplayMemberBinding="{Binding Nachname}" Header="Nachname" />
                            <GridViewColumn DisplayMemberBinding="{Binding Postleitzahl}" Header="PLZ" />
                            <GridViewColumn DisplayMemberBinding="{Binding Ort}" Header="Ort" />
                            <GridViewColumn DisplayMemberBinding="{Binding Land}" Header="Land" />
                        </GridView>
                    </ListView.View>
                </ListView>

最佳答案

为此使用转换器。

public class NullGuestImageToPlaceholderConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null || !File.Exists(value as string))
            return placeholderImage;

        return GetImage(value);
    }

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


XAML:

<ListView x:Name="listview">
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding GuestImage, Converter={StaticResource nullGuestImageConverter}}" Header="Image" />
            <!-- your other columns -->
        </GridView>
    </ListView.View>
</ListView>


我没有GetGuestImage实现或完整的XAML,所以这是我目前最多能做的。

nullGuestImageConverter应该是转换器的x:Key,在XAML的资源中定义(例如<UserControl.Resources>),而placeholderImage应该是检索所述占位符图像的方式的实现(我猜它出现在GetGuestImage()中) 。

实际上,我想您可以简单地用Convert替换GetGuestImage方法的内容,但是我不确定。

10-07 20:02