绑定ObservableCollection的ListView添加项时出现无效转换异常
ListView绑定ObservableCollection添加项时抛出“指定的转换无效”异常,CollectionView却正常工作的原因?
向绑定到ListView的ObservableCollection中添加项时,抛出“指定的转换无效”异常,但将同一数据源绑定到CollectionView时可正常工作,相关代码如下:
ObservableCollection定义
public ObservableCollection<Category> SearchCategoriesResults { get; set; } = new();
ListView的XAML代码
<ListView ItemsSource="{Binding SearchCategoriesResults}" BackgroundColor="{StaticResource Primary}" SeparatorVisibility="None" WidthRequest="250" RowHeight="30" HeightRequest="150"> <ListView.ItemTemplate> <DataTemplate x:DataType="model:Category"> <Label Text="{Binding Name}" /> </DataTemplate> </ListView.ItemTemplate> </ListView>
触发异常的代码
public void SearchCategories() { SearchCategoriesResults.Clear(); try { //测试用的任意数据 SearchCategoriesResults.Add(new Category { Id = 15, Name = "Name" }); } catch(Exception ex) { //异常信息:指定的转换无效 Debug.WriteLine(ex.Message); } }
正常工作的CollectionView代码
<CollectionView ItemsSource="{Binding SearchCategoriesResults}" SelectionMode="Single" SelectedItem="{Binding SearchCategoriesSelectedResult, Mode=TwoWay}" HeightRequest="120" WidthRequest="250"> <CollectionView.EmptyView> <StackLayout Padding="50"> <Label TextColor="White" FontAttributes="Bold" HorizontalOptions="CenterAndExpand" Text="NO DATA" VerticalOptions="CenterAndExpand" /> </StackLayout> </CollectionView.EmptyView> <CollectionView.ItemsLayout> <LinearItemsLayout Orientation="Vertical" /> </CollectionView.ItemsLayout> <CollectionView.ItemTemplate> <DataTemplate x:DataType="model:Category"> <Grid HeightRequest="40" Margin="5,3,5,3" Padding="5,0,5,0" ColumnDefinitions="*" RowDefinitions="*,*" BackgroundColor="{StaticResource Secondary}"> <VisualStateManager.VisualStateGroups> <VisualStateGroup Name="CommonStates"> <VisualState Name="Selected"> <VisualState.Setters> <Setter Property="BackgroundColor" Value="{StaticResource Fourth}" /> </VisualState.Setters> </VisualState> <VisualState Name="Normal"> <VisualState.Setters> <Setter Property="BackgroundColor" Value="{StaticResource Secondary}" /> </VisualState.Setters> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <Label Grid.Row="0" TextColor="White" Text="{Binding Name}" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" /> </Grid> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView>
不清楚为何CollectionView可正常工作而ListView不行,请问原因是什么?
内容的提问来源于stack exchange,提问作者XJonOneX
相关产品推荐
相关产品推荐

