#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
. Вы сказали редактору дважды пересчитать высоту, двумя разными способами. Что произойдет, если вы сделаете только одно из них?