我有一个 CollectionView 可以说是老师,每个老师都有学生。我想列出老师,在里面我想列出所有学生及其自己的数据 它按预期工作,但超级滞后,如果我删除学生集合视图,滚动将再次平滑。
模板被包裹在cardview内部
<CollectionView
ItemsSource="{Binding TeacherItems}">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="models:Teacher">
<templates:TeacherItemTemplate />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
教师项目模板:
<Grid RowDefinitions="Auto,Auto,Auto">
<Label
Grid.Row="0"
FontSize="Subtitle"
LineBreakMode="TailTruncation"
Text="{Binding Name}"
TextColor="{DynamicResource TextColor}"
VerticalTextAlignment="Center" />
<Label
Grid.Row="1"
Grid.ColumnSpan="2"
FontSize="Caption"
HorizontalOptions="Fill"
LineBreakMode="WordWrap"
Text="{Binding RegistrationDate, StringFormat='{0:dddd, MMMM d HH:mm}'}"
TextColor="{DynamicResource TextSecondaryColor}" />
<CollectionView Grid.Row="2" ItemsSource="{Binding Students}">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="models:Student">
<StackLayout Orientation="Horizontal">
<Label
FontSize="Caption"
Text="{Binding Name}"
TextColor="{DynamicResource TextSecondaryColor}" />
<Label
FontSize="Caption"
Text=" - "
TextColor="{DynamicResource TextSecondaryColor}" />
<Label
FontSize="Caption"
Text="{Binding Age}"
TextColor="{DynamicResource TextSecondaryColor}" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
使用 Bindable stacklayout 解决了这个问题
<StackLayout Grid.Row="2" BindableLayout.ItemsSource="{Binding Sudents}">
<BindableLayout.ItemTemplate>
<DataTemplate x:DataType="models:Student">
<Label
FontSize="Caption"
Text="{Binding Name}"
TextColor="{DynamicResource TextSecondaryColor}" />
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>