MAUI项目,无法导航到新页面。

8

我在 MAUI 中遇到了一个 bug,想知道是不是只有我自己遇到了这个问题或者是我在这个新环境中做错了什么 :)

之前,当我通过按钮点击导航到新页面时,总是能够成功实现如下功能:

private async void OnButtonClicked(object sender, EventArgs e)
       {
           await Navigation.PushAsync(new Page1());
       } 

但是它似乎不再起作用了,这是我在C#代码中的Page1的样子:

    public partial class Page1 : ContentPage
    {
        public Page1()
        {
           InitializeComponent();
        }

        protected override async void OnAppearing()
        {
            base.OnAppearing();

            await MainThread.InvokeOnMainThreadAsync(async () => { await LoadRecipes(); });
        }

        private async Task LoadRecipes() 
        {

           //no code yet
        }
    }
}

当我运行这个代码并点击按钮时,没有任何反应。

你是否使用了 NavigationPage 来包装 MainPage?例如:Window(new NavigationPage(new MainPage())); - Leo Zhu
是的,我尝试过那个方法,但不幸的是它没有起作用。 - CodeBuddyBenny
你能解决这个问题吗? - Taufiq Abdur Rahman
2个回答

5

您可以通过按钮单击或TapGestureRecongnizer进行导航。

private void TapGestureRecognizer_Tapped_2(object sender, EventArgs e)
    {
        App.Current.MainPage = new NavigationPage(new Page1());

    }

或者在按钮中使用。

 private void Button_Clicked(object sender, EventArgs e)
    {
        App.Current.MainPage = new NavigationPage(new Page1());
    }

1
这总比没有好,但我使用它时遇到的问题是,在导航窗格上(至少在Android上)无法使用后退按钮返回到上一页。 - Juan Ignacio Avendaño Huergo

2

请尝试以下操作:首先在您的App.xaml.cs文件中

public partial class App : Application
{
    public App()
    {
        InitializeComponent();
        MainPage = new NavigationPage(new MainPage());
    }
}

然后在你的主页面(MainPage)中,你可以完成你所尝试做的事情:

private async void btnNav_Clicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new Page1());
}

这应该能够跟踪用户导航,但在某些奇怪的情况下,我发现它不太好用,但这是微软在入门指南中记录的解决方案。我希望在他们的Maui指南中能够看到更多关于导航的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接