Лучший способ обеспечить плавный переход страниц в .NET MAUI ⇐ C#
Лучший способ обеспечить плавный переход страниц в .NET MAUI
Используя навигацию оболочки в 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 в элементах) { Предметы.Добавить(пункт); } } } Я думаю, что это может быть не очень надежно, поскольку на старых и медленных устройствах время задержки может быть слишком коротким. На устройствах высокого класса время задержки может даже стать очевидным и раздражающим.
Это приемлемый способ сделать это?
Используя навигацию оболочки в 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 в элементах) { Предметы.Добавить(пункт); } } } Я думаю, что это может быть не очень надежно, поскольку на старых и медленных устройствах время задержки может быть слишком коротким. На устройствах высокого класса время задержки может даже стать очевидным и раздражающим.
Это приемлемый способ сделать это?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение