如何在 C# Xamarin 中更新轮播视图?

How to update carousel view in c# Xamarin?

我有一个显示图片列表的轮播视图,这个列表会改变,我无法让轮播视图添加或删除图片。

XAML : 
 <CarouselView x:Name="main_carousel">
            <CarouselView.ItemTemplate>
                <DataTemplate>
                        <Image Source="{Binding .}"/>
                </DataTemplate>
            </CarouselView.ItemTemplate>
 </CarouselView>

我的图片列表路径添加到主页构造函数中的项目源

C# : 
public static List<string> imagesList;

public MainPage()
        {

            InitializeComponent();

            imagesList = new List<string>();
            main_carousel.ItemsSource = imagesList;
        }

起初轮播是空的,但后来我在我的列表中添加了一些路径,例如:

C# :
public void addElementToMainCarousel()
        {
            imagesList.add(absolute_path + "myImage1.jpg");            
            imagesList.add(absolute_path + "myImage2.jpg");
        }

如果我之后在列表中添加路径,轮播视图不会显示任何内容。但是,如果我在第一个 main_carousel.ItemsSource = imagesList; .

之前添加列表中的路径,它就会起作用

我尝试像这样重新设置 ItemsSource:

C# :
 public void addElementToMainCarousel()
        {
            imagesList.add(absolute_path + "myImage1.jpg");            
            imagesList.add(absolute_path + "myImage2.jpg");
            main_carousel.ItemsSource = imagesList;
        }

但是没用。

有没有办法强制刷新轮播视图,或者你知道有什么可以帮助我的吗?

无论何时您想要使用绑定视图和视图模型的列表,您都必须实现 ObservableCollection,而不是列表。 ObservableCollection 从一侧到另一侧反映您的更改。

ObservableCollection<string> myList = new ObservableCollection<string>();
mylist.Add(yourString);
listview.itemSource = mylist;

出于某种原因,即使您更新 imagesList,CarouselView 也不会 re-draw 自身出现在屏幕上。您需要 re-assign CarouselView.ItemSource 属性 使用包含更新数据的新 List<string>Array。请看下面的示例:

 myCarouselView.ItemSource = imageslist.ToArray();

这对我有用 ToArray() 方法 returns 具有更新数据的新对象,从之前的 List 复制而来。