Xamarin C# - 从其他类调用异步方法

Posted

技术标签:

【中文标题】Xamarin C# - 从其他类调用异步方法【英文标题】:Xamarin C# - Calling Async Methods from other classes 【发布时间】:2021-05-29 22:43:55 【问题描述】:

对于项目中的每个页面,我都有推送到导航的异步方法,如下所示:

async void LoadOtherPage(object sender, EventArgs e)

   await Navigation.PushAsync(new OtherPage());

由于应用程序的目的,多个页面定义了相同的功能。但是,我不想继续为每个单独的页面重新定义功能。我只想在一个静态类中定义我所有的异步函数,我可以调用它来切换页面。我尝试的解决方案如下:

static class PageCaller

   static async public void LoadOtherPage(object sender, EventArgs e)
         
      await Navigation.PushAsync(new OtherPage());
   

不幸的是,当我将类和函数设为静态时,未定义 Navigation.PushAsync。有没有一种简单的方法来定义我所有的异步页面调用函数,然后在我需要推送到导航堆栈时调用它们?

【问题讨论】:

导航是Page的一个属性,所以它只存在于Pages上。 2 种简单的方法:1)创建您自己的定义函数的基页面类,并让您的其他页面从它继承,或者 2)在静态类中使用 Application.Current.MainPage.Navigation 我把它改成了``` static class PageCaller static async public void LoadOtherPage(object sender, EventArgs e) await App.Current.MainPage.Navigation.PushAsync(new OtherPage()); ``` 它的工作原理。谢谢! 【参考方案1】:

我改成

static class PageCaller

   static async public void LoadOtherPage(object sender, EventArgs e)
         
      await App.Current.MainPage.Navigation.PushAsync(new OtherPage());
   

它有效。谢谢!

【讨论】:

感谢分享。不要忘记接受答案。

以上是关于Xamarin C# - 从其他类调用异步方法的主要内容,如果未能解决你的问题,请参考以下文章

从 ViewModel 构造函数 Xamarin.Forms 调用异步方法

在 C# 中的类构造函数中调用异步方法 [重复]

使用异步等待 C# Xamarin

Xamarin.Forms 调用 腾讯地图SDK

base(C# 参考)

如何从 C# 代码调用 Google 地理编码服务