为列表中的每个ImageSource设置一个名称

本文关键字:一个 ImageSource 列表 设置 | 更新日期: 2023-09-27 18:20:47

我调用一个API,从那里得到一个id、一个名称和一个图像的URL。。。

我在翻转视图中显示它们,我过去常常转换它们,将它们保存在文件夹中,转换回并显示它们。。。

所以我想如果我直接从他们的URL显示他们会容易得多。

现在,当用户点击(点击)图像时,它必须转到另一个页面来显示该图像的详细信息(在保存图片时,它工作得很好,因为我用id(id.png)命名了它们)

我是否可以将ImageSource命名为此id,或者将其作为属性(Title或name)?

var pics = from special in GlobalVariables.Special
           where special.special == "1"
           select new { id = special.id, name = special.name, image = special.banner_image, featured = special.special };
foreach (var item in pics)
{
   await savePicToDisk(item.image, item.name, item.id, item.featured);
}

因此,与其保存它们:

List<ImageSource> listOfImages = new List<ImageSource>();    
string url = "http://52.8.2.140" + picAddress;
ImageSource urlOfPic = new BitmapImage(new Uri(url, UriKind.Absolute));
listOfImages.Add(urlOfPic);

然后,在我必须向他们展示的地方,我只需将其绑定到翻转视图:

flipView1.DataContext = Classes.Special.listOfImages;

为列表中的每个ImageSource设置一个名称

Item_Click事件的参数具有属性ClickedItem(在某些情况下,您可能还需要OriginalSource),您可以使用该属性指向集合中的项目。如果项的类具有负责Name/Id/other的属性,则您可以在导航时自由传递该属性,其他解决方案可能正在传递集合中所选项的索引。示例代码;

private void ItemClick(object sender, ItemClickEventArgs e)
{
    var item = e.ClickedItem as ItemClass;
    if (item != null) 
        Frame.Navigate(typeof(DetailPage), item.ID);
    // if your item contains a Name/Id/other you can pass that when navigating
    // you can also pass index of your item in collection if you need
}