Обновление привязки текста в виде списка вызывает мерцание на iOS с помощью Xamarin.Forms - PullRequest
0 голосов
/ 05 ноября 2019

Я работаю над приложением чата Xamarin.Forms, которое отправляет / получает текст за символом, это означает, что текстовая привязка в строке просмотра списка обновляется каждые 1-2 секунды или полсекунды (в зависимости от скорости набора),В Android элемент списка обновляется плавно, но в iOS он мигает и пульсирует, как стробоскоп с каждым введенным символом.

Редактировать Шаги репликации: привязать ItemSource Listview к ObservableCollection, которая обновляется для каждого элемента. новый персонаж набран в Entry. Используйте DataTemplate с меткой, которая отображает текст, введенный в поле ввода.

В Page.xaml

<ListView HasUnevenRows="True" ItemsSource="{Binding ObservableCollection}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <ViewCell.View>
                    <Grid>
                        <Label Text="{Binding Text}"/>
                    </Grid>
                </ViewCell.View>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
<Entry Text="{Binding UserText}"/>

В PageViewModel.cs

    /// <summary>
    /// Gets or sets the text entered by the user
    /// </summary>
    public string UserText
    {
        get
        {
            return this.userText;
        }

        set
        {
            this.SetProperty(ref this.userText, value);

            // Display text by updating listview
            Device.BeginInvokeOnMainThread(() =>
            {
                this.ObservableCollection.Add(userText);
            });
        }
    }          

1 Ответ

0 голосов
/ 06 ноября 2019

Я создал ListViewRenderer на iOS и установил AnimationsEnabled = false. Стряхивание исчезло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...