簡體   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