Лучший способ обеспечить плавный переход страниц в .NET MAUIC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Лучший способ обеспечить плавный переход страниц в .NET MAUI

Сообщение Anonymous »


Используя навигацию оболочки в dotNET MAUI, каков наилучший (наиболее надежный) способ гарантировать, что переходы страниц всегда анимируются и делают это максимально плавно на разных устройствах?

Я нашел самое простое решение, но мне интересно, есть ли лучший способ сделать это. То, как я это делаю сейчас, не кажется слишком надежным, особенно на разных (более медленных и быстрых) устройствах. Действительно ли это лучший/наиболее приемлемый способ?

Актуальная проблема:
Я заметил, что на некоторых моих страницах нужно загрузить немного больше данных. Хотя, на мой взгляд, это все еще вполне приемлемая сумма, анимация навигации не отображается, поскольку загрузка данных приводит к ее задержке. Обратите внимание, что в моем случае мне приходится загружать данные внутри события Appearing в моей ViewModel из-за интерфейса IQueryAttributable. Свойства устанавливаются из параметров запроса после конструктора, но до события появления, в котором я заполняю представление. Я использую инструментарий сообщества MAUI для преобразования события появления страницы в команду.

Мое текущее решение:
Я перехожу на страницу с помощью Shell await Shell.Current.GoToAsync($"{nameof(PageName)}", true, Params);, и это очень примитивный/простой пример пункта назначения. страница, которую я бы хотел:

XAML:

Модель просмотра:

По сути, я откладываю все действия в OnAppearing(), чтобы сначала анимировать, прежде чем фактически заполнять страницу:

публичный класс PageNameViewModel: BaseViewModel, IQueryAttributable { элементы частного списка {get; набор; } = новый(); public ObservableCollection Items {get; набор; } = новый(); общественная команда OnAppearingCommand {get; частный набор; } общедоступная PageNameViewModel() { OnAppearingCommand = новая команда (OnAppearing); } public void ApplyQueryAttributes (IDictionary Params) { items = Params["Items"] как предметы; } частный асинхронный void OnAppearing() { // Задержка здесь для ожидания анимации страницы перед ее заполнением: ждать Task.Delay(500); foreach (элемент var в элементах) { Предметы.Добавить(пункт); } } } Я думаю, что это может быть не очень надежно, поскольку на старых и медленных устройствах время задержки может быть слишком коротким. На устройствах высокого класса время задержки может даже стать очевидным и раздражающим.

Это приемлемый способ сделать это?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»