繁体   English   中英

如何在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;之前, 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也不会在屏幕上重新绘制自己。 您需要使用包含更新数据的新List<string>Array重新分配CarouselView.ItemSource属性。 请参阅以下示例:

 myCarouselView.ItemSource = imageslist.ToArray();

这对我ToArray() ,因为ToArray()方法返回具有从先前List复制的更新数据的新对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM