Я пытаюсь отобразить представление списка с ячейками, которые отображаются с помощью специального рендеринга iOS. При прокрутке списка есть неприятные накладки (как показано ниже). Я перевернул его на следующие строки кода.Проблема со повторным использованием ячеек со списком и видом ячеек с помощью настраиваемого средства визуализации
App
содержит ListView
с ItemsSource
набора на фиктивного список всех символов от А до Z. ItemTemplate
создается с пользовательской ItemCell
, определенной ниже.
public class App : Application
{
public App()
{
MainPage = new ContentPage {
Content = new ListView {
ItemsSource = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(),
ItemTemplate = new DataTemplate(typeof(ItemCell)),
},
};
}
}
The ItemCell
содержит Label
привязанный к элементу списка.
public class ItemCell: ViewCell
{
public ItemCell()
{
View = new Label();
View.SetBinding(Label.TextProperty, ".");
}
}
КСН в Label
оказывается следующим FixedLabelRenderer
. Он устанавливает нативное управление, представленное UILabel
, содержащее Element
Text
.
public class FixedLabelRenderer : ViewRenderer<Label, UILabel>
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
SetNativeControl(new UILabel(RectangleF.Empty) { Text = Element.Text });
}
}
Теперь проблема заключается в том, что, по-видимому, при повторном использовании ячейки, контроль не удаляется, а только новое создается. Поэтому я получаю наложения, показанные на скриншотах ниже.
(Слева: перед прокруткой, Справа: после прокрутки)
Интересно этот вопрос не происходит с Xamarin.Forms 1.2.3 или 1.3.1, но с 1.3.5 и 1.4. 0.
Не могли бы вы объяснить более подробно? –