用于在 Windows 应用商店应用的列表视图中绑定图像的值转换器

本文关键字:应用 绑定 图像 转换器 视图 列表 用于 Windows | 更新日期: 2023-09-27 18:31:35

我正在尝试将本地/独立存储中的图像绑定到Windows 8.1应用商店应用程序中的列表视图。路径(或文件名)存储在从数据库获取的可观察集合中的对象中。

我可能在这里想得太简单了,但理解以下"奇怪"行为将是将图像发送到我的 ListView 的关键。我确实找到了一些使用值转换器进行图像绑定的示例,但它们适用于 Silverlight 应用程序。

-

加工

尝试将图像从独立存储绑定到 XAML 中的图像源,这有效:

在页面中

<ImageBrush ImageSource="{Binding ImagePath}" />

并在视图中模型

ImagePath = "ms-appdata:///local/" + _currentCustomer.ImgPath;

-

不工作

然而,以下内容(这将有助于我实现我的 ListView)不起作用,尽管它似乎为 XAML ImageSource 绑定 (ms-appdata:///local/image.jpg) 生成完全相同的结果:

在页面中(ImgPath 是客户对象的属性,基本上是文件名)

<ImageBrush ImageSource="{Binding currentCustomer.ImgPath, Converter={StaticResource imageFileConverter}}" />

并在视图中模型

public class ImageFileConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        string fileName = value as string;
        if (fileName != null)
        {
            String imagePath = "ms-appdata:///local/" + fileName;
            return imagePath;
        }
        return null;
    }
    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

和在应用程序.xaml 中

<converters:ImageFileConverter:  x:Key="imageFileConverter"/>

-

有什么区别,或者(更好)需要做什么?

用于在 Windows 应用商店应用的列表视图中绑定图像的值转换器

由于没有这个我就无法继续,所以我继续学习并弄清楚了。如果以编程方式设置,则 ImageSource 需要作为 BitmapImage 提供。转换器需要更改如下:

public class ImageFileConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        string fileName = value as string;
        if (fileName != null)
        {
            BitmapImage bitmap = new BitmapImage();
            bitmap.UriSource = new Uri("ms-appdata:///local/" + fileName);
            return bitmap;
        }
        return null;
    }
    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}