PopAsyn c не работает, когда я использую его в моделях просмотра TabbedPage - PullRequest
1 голос
/ 13 июля 2020

Хорошо, поэтому в моем предыдущем дизайне на моей MainPage, которая называется TasksGroupPage, у меня был значок «+», который приводил меня к NewTasksGroupPage для заполнения формы, а затем щелкнул команду сохранения, чтобы создать новую TasksGroup (так что я больше не нужна функция значка + для загрузки страницы).

Это работало отлично, и после нажатия кнопки сохранения я перешел на главную страницу.

Но моя проблема в том, что Я изменил свой дизайн, теперь я удалил значок + и вместо этого создал новую вкладку, которая теперь переводит меня на NewTasksGroupPage.

Чтобы создать эту вкладку, я просто добавил в свою TasksGroupPage (главную страницу) следующий код : <views:NewTasksGroupPage></views:NewTasksGroupPage>

Проблема в том, что: Когда я нажимаю команду сохранения в моей NewTaskPageViewModel, страница не переводит меня на последнюю страницу, как это было до того, как ТАКЖЕ она уходит весь текст в поле ввода там, и он создает мою TasksGroupPage только через некоторое время.

Как мне настроить этот новый дизайн для правильной работы? Если это невозможно сделать, есть ли способ добавить GestureRecognizers на одну из вкладок?

Спасибо.

Здесь вы можете увидеть мой код прямо сейчас:

TasksGroupPage.xaml

<TabbedPage>
    <ContentPage>
    // some xaml
    </contentPage>
<views:NewTasksGroupPage></views:NewTasksGroupPage>

</TabbedPage>

TasksGroupPage.xaml.cs это функция, которая мне больше не нужна, но это то, что я использовал со значком +

protected async void GoToNewTaskPage(object sender, EventArgs e)
{
    await Navigation.PushAsync(new Views.NewTasksGroupPage());
}

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

    async Task SaveNewTask()
    {
    //some code
                    await Application.Current.MainPage.DisplayAlert("Save", "La tâche a été enregistrée", "OK");
                    await Application.Current.MainPage.Navigation.PopAsync();
                    NotifyPropertyChanged();
    
    }

1 Ответ

0 голосов
/ 14 июля 2020

Если вы читаете документ Xamarin.Forms Navigation :

, вы обнаружите, что NavigationPage и TabbedPage - это два разных способа навигации по страницам в Xamarin.forms.

Navigation.PushAsync и Navigation.PopAsync работают только в NavigationPage, они не работают в TabbedPage, поэтому the page doesn't take me to the last page like it did before.

Если вы используете TabbedPage, вы можете использовать приведенный ниже код для переключения страницы:

async void SaveNewTask(object sender, EventArgs args)
{

    //this here means the current ContentPage 
    //this.Parent = NavigationPage
    var tabbedPage = this.Parent.Parent as TabbedPage;

    //if you don't have navigationPage, just use:
    //var tabbedPage = this.Parent as TabbedPage;

    //Switch to first page in tabs
    tabbedPage.CurrentPage = tabbedPage.Children[0];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...