C# 在列表框中滚动时调用ImageFailed

C# 在列表框中滚动时调用ImageFailed,c#,uwp,C#,Uwp,我有一个列表框,其中每个项目由在线下载的图像组成 <ListBox.ItemTemplate > <DataTemplate> <StackPanel Margin="10" > <RelativePanel> <Image ImageFailed="Image_ImageFailed"> <Image.Sour

我有一个列表框,其中每个项目由在线下载的图像组成

<ListBox.ItemTemplate >
    <DataTemplate>
        <StackPanel Margin="10" >
            <RelativePanel>
                <Image ImageFailed="Image_ImageFailed">
                    <Image.Source>
                        <BitmapImage UriSource="{Binding IMG1}" />
                    </Image.Source>
这就是我绑定数据的方式

data = from query in loadedData.Descendants("item") select new Models.Item
{
    IMG1 = "https://example.png",
};

ItemsListBox.ItemsSource = data.Select(grp => grp.FirstOrDefault());
起初,它运行良好。然而,当我开始再次向下和向上滚动时,由于ImageFailed方法,所有图像都会被默认图像替换。所以,

  • 为什么listbox在我滚动时尝试重新加载图像

  • 为什么即使图像url有效也调用ImageFailed

  • 我必须自己缓存图像吗


  • 尝试将
    IMG1
    属性的类型更改为
    ImageSource
    ,并将其设置为

    IMG1 = new BitmapImage(new Uri("https://example.png"))
    
    然后从XAML中删除BitmapImage并直接绑定图像控件的
    源属性:

    <Image ImageFailed="Image_ImageFailed" Source="{Binding IMG1}" />
    

    请显示IMG1属性的实现,以及Image_ImageFailed方法。我已经添加了两者。相同。。是否还要尝试设置默认图像而不是ImageFailed方法?
    <Image ImageFailed="Image_ImageFailed" Source="{Binding IMG1}" />
    
    ItemsListBox.ItemsSource = data.Select(grp => grp.FirstOrDefault()).ToList();