Когда я быстро прокручиваю список, каждая ячейка становится черной до загрузки данных. Если я прокручиваю медленно данные, черные ячейки не появляются. Такое поведение происходит только для проекта Xamarin UWP. Пожалуйста, найдите изображение ниже для справки. .com/X1Fsw.png" alt="введите здесь описание изображения">
Xamarin form-UWP — черная ячейка отображается до того, как данные будут видны при быстрой прокрутке списка
Ответы (2)
Устранена проблема путем написания пользовательского ViewCell и использования собственного шаблона данных. Теперь нет черных ячеек при быстрой прокрутке. Я отправляю свой ответ, чтобы кто-то мог найти его полезным.
Например: Если у вас есть список имен для отображения, выполните следующие действия:
Сначала добавьте пользовательскую ячейку просмотра следующим образом
public class CustomViewCell : ViewCell
{
public static readonly BindableProperty NameProperty =
BindableProperty.Create("Name", typeof(string), typeof(CustomViewCell), "");
public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
}
Теперь добавьте ListView в XAML следующим образом:
<ListView
ItemsSource="{Binding Products}">
<ListView.ItemTemplate>
<DataTemplate>
<custom:CustomViewCell Name="{Binding Name}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Затем вам нужно написать стиль DateTemplate в App.xaml проекта UWP следующим образом:
<ResourceDictionary>
<DataTemplate x:Key="CustomTemplate">
<Grid Padding="10">
<TextBlock Foreground="#333333" FontSize="14" VerticalAlignment="Center" Text="{Binding Name"/>
</Grid>
</DataTemplate>
</ResourceDictionary>
Наконец, напишите CustomRenderer, чтобы заменить нативную ячейку просмотра на наш ListView.
public class CustomViewCellRenderer : ViewCellRenderer
{
public override Windows.UI.Xaml.DataTemplate GetTemplate(Cell cell)
{
return App.Current.Resources["CustomTemplate"] as Windows.UI.Xaml.DataTemplate;
}
}
Теперь список работает отлично, без проблем с рендерингом черных ячеек.
Это не проблема с вашим кодом. Когда вы прокручиваете слишком быстро, система не успевает отображать ячейки так же быстро, как вы прокручиваете, поэтому появляется черная ячейка.