Кнопка «Назад» оболочки Xamarin.Forms отключает анимацию - PullRequest
0 голосов
/ 11 марта 2020

В настоящее время я создаю приложение, в котором не требуется анимация при нажатии и перемещении в Navigation в Shell.

Я получил его для Pu sh Pages, поскольку это просто "ложное" выражение для однако эта функция, однако переопределяющая функциональность кнопки «Назад», не оказывает никакого влияния на анимацию Popping.

Следующее действие должно переопределять кнопки «Назад» всех страниц приложения, чтобы сделать «Pop» без анимации, однако анимация продолжается.

Я что-то не так делаю?

public partial class AppShell : Xamarin.Forms.Shell
{
    public AppShell()
    {
        InitializeComponent();
    }

    protected override bool OnBackButtonPressed()
    {
        Current.Navigation.PopAsync(false);
        return true;
    }
}

1 Ответ

0 голосов
/ 11 марта 2020

Это открытая ошибка с Xamarin, которую можно найти в этом выпуске Github .

Из того, что я понимаю, команда xamarin считает это серьезным изменением, и это может занять некоторое время исправить.

Предложение

Там есть комментарий, который использует Custom Renderer, чтобы исправить это следующим образом:

[assembly: ExportRenderer(typeof(NavigationPage), typeof(CNavigationPageRenderer))]
namespace TestApp.Droid
{
public class CNavigationPageRenderer : NavigationPageRenderer
{
    public CNavigationPageRenderer(Context context) : base(context)
    {

    }

    protected override Task<bool> OnPushAsync(Page view, bool animated)
    {
        return base.OnPushAsync(view, false);
    }

    protected override Task<bool> OnPopViewAsync(Page page, bool animated)
    {
        return base.OnPopViewAsync(page, false);
    }

    protected override Task<bool> OnPopToRootAsync(Page page, bool animated)
    {
        return base.OnPopToRootAsync(page, false);
    }
}
}

Сделайте то же самое для других платформ. Как я уже сказал, это делает анимированный флаг в Core бесполезным, но, по крайней мере, он отключает все анимации страниц, даже когда вы используете кнопку «Назад», потому что он должен вызывать OnPopViewAsyn c.

Вы можете потенциально добавить пользовательские логи c здесь для сканирования типов страниц или определенного набора критериев (например, ваши пользовательские логи c [т.е. неанимированный pu sh должен быть связан с неанимированным всплывающим знаком для этой указанной c страницы]) .

Гудлак, не стесняйтесь, если у вас есть вопросы

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