我有一个轮播视图,其中显示了图像列表,并且此列表会更改,因此我无法使轮播视图添加或删除图像。
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;
}
但它不起作用。
是否有一种方法可以强制刷新轮播视图,或者您知道有什么可以帮助我的吗?
答案 0 :(得分:1)
每当您要使用同时绑定视图和视图模型的列表时,必须实现ObservableCollection,而不是列表。 ObservableCollection反映了您的更改。
ObservableCollection<string> myList = new ObservableCollection<string>();
mylist.Add(yourString);
listview.itemSource = mylist;
答案 1 :(得分:1)
由于某些原因,即使您更新了imagesList
,CarouselView也不会在屏幕上重新绘制自己。您需要使用包含更新后的数据的新CarouselView.ItemSource
或List<string>
重新分配Array
属性。请查看下面的示例:
myCarouselView.ItemSource = imageslist.ToArray();
这对我来说是有效的,因为ToArray()
方法返回一个具有更新数据的新对象,该对象是从先前的List
复制而来的。