如何在 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
复制而来。
我有一个显示图片列表的轮播视图,这个列表会改变,我无法让轮播视图添加或删除图片。
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
复制而来。