Xamarin正在删除CollectionView子项



我遇到了一个问题,无法刷新Xamarin的CollectionView中的GUI元素。

绑定到CollectionViewObservableCollection项目刷新事件期间被清除并填充新元素,但在屏幕上显示旧的StackLayout

原因是Items.Clear()上的SingleItem控件未被删除-如何删除?

<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);
}
}

等一下,在你走之前,因为我在下面写下了我的";想法;如何解决。

问题是,我发现没有";清除";或";删除";作为Element内部成员的GUIAllChildren的方法:

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(() => ???);
...

您可以像这样编写Grid,并将ObservableCollection数据绑定到标签,而不是使用<controls:SingleItem/>

<CollectionView  x:Name="Collection"  ItemsSource="{Binding Items}">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid BackgroundColor="White" HeightRequest="5" HorizontalOptions="Fill" VerticalOptions="End">

<Label
Text="{Binding itemName}"
FontAttributes="Bold"
x:Name="labelname" VerticalTextAlignment="Center" HorizontalTextAlignment="Center"/>

</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>

最新更新