Xamarin.Редактор форм, изменяющий размер дрожания в проекте UWP

#xamarin #xamarin.forms #uwp #xamarin.uwp

Вопрос:

Почему возникает дрожание при Editor изменении размера новой строки?

 <StackLayout>
    <Editor AutoSize="TextChanges"/>
</StackLayout>
 

Также бывает, когда я пытаюсь вручную изменить его размер внутри OnTextChanged (предварительно удалив AutoSize="TextChanges" ). Это может быть устранено, если подождать некоторое время:

 protected override void OnTextChanged(string oldValue, string newValue)
{
    base.OnTextChanged(oldValue, newValue);
    HeightRequest  = 10;
    System.Threading.Thread.Sleep(100);
}
 

Также нет такой проблемы для обычного UWP проекта, использующего соответствующий TextBox класс с. AcceptsReturn="True"

Плавное изменение размера текстового поля в обычном проекте UWP:

введите описание изображения здесь

Дрожащий редактор из проекта xamarin UWP:

введите описание изображения здесь

Как я могу это исправить?

Дополнительный:

С AutoSize и Sleep ( HeightRequest удалено):

введите описание изображения здесь

Комментарии:

1. Вы зависаете в потоке пользовательского интерфейса с помощью Sleep оператора, почему?

2. @SushiHangover это предназначено для тестирования и отладки.

3. Sleep зависает текущий поток, и в этом случае OnTextChanged это поток пользовательского интерфейса, поэтому я ожидаю, что пользовательский интерфейс будет дрожать, когда вы прерываете процесс компоновки пользовательского интерфейса

4. @SushiHangover, вы неправильно поняли мой вопрос. Сначала он дрожит так, как есть (без сна, конечно), затем я пытаюсь выяснить, в чем причина, и переопределить OnTextChanged . Это помогает понять, что время как-то имеет значение.

5. Это выглядит как взаимодействие между AutoSize и динамично меняющимися HeightRequest . Вы сказали редактору дважды пересчитать высоту, двумя разными способами. Что произойдет, если вы сделаете только одно из них?