我在Xamarin的CollectionView
中遇到了一个不刷新GUI元素的问题。
绑定到CollectionView
的ObservableCollection
项目在 RefreshingEvent 期间被清除并填充新元素,但在屏幕上显示旧的StackLayout
。
原因是SingleItem
控件未在Items.Clear()
上移除/删除-如何执行?
<CollectionView x:Name="collection"
ItemsSource="{Binding Items}"
SelectionMode="None">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<controls:SingleItem/>
<Grid BackgroundColor="White" HeightRequest="5" HorizontalOptions="Fill" VerticalOptions="End"/>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
C# -没有什么“不寻常”的,这工作正常(在断点):
void RefreshCommand()
{
List<Item> items = null;
items = GetItems();
if (items != null)
{
Items.Clear();
foreach (var item in items)
Items.Add(item);
}
}
等待,在你前进,因为下面我写了我的“想法”如何解决它。
问题是我没有找到GUI AllChildren
的“Clear”或“Remove”方法-Element
的内部成员:
void RefreshCommand(Action clearCollectionView)
{
List<Item> items = null;
items = GetItems();
if (items != null)
{
Items.Clear();
cleacCollectionView.Invoke();
foreach (var item in items)
Items.Add(item);
}
}
// page.xaml.cs:
...
BindingContext = new Model(() => ???);
...
1条答案
按热度按时间6psbrbz91#
您可以像这样编写
Grid
,并将ObservableCollection
数据绑定到标签,而不是使用<controls:SingleItem/>