通过按钮将纬度经度作为变量传递给内容页面

Pass latitude longitude as variable by button to contentpage

我正在通过 azure 使用网络服务,我需要将纬度和经度从数据库传递到内容页面

我正在使用 Visual Studio 2017 和 xamarin 表单

<Button Text="Ver localización" VerticalOptions="Start" Clicked="Onbtn_Clicked"
    HorizontalOptions="FillAndExpand" /> 


private async void Onbtn_Clicked(object sender, EventArgs e)
    {         
       Application.Current.MainPage = new NavigationPage(new MapAppPage2()) ;
    }

在 MapAppPage2 中:

map.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(latitudeVar, longitudeVar), Distance.FromMiles(10)));

我需要一些关于我应该如何进行的指南,或者一些我可以用来帮助的文档

您可以将纬度/经度作为参数传递给 MapAppPage2。

<Button Text="Ver localización" VerticalOptions="Start" Clicked="Onbtn_Clicked"
    HorizontalOptions="FillAndExpand" /> 


private async void Onbtn_Clicked(object sender, EventArgs e)
    {         
       Application.Current.MainPage = new NavigationPage(new MapAppPage2(lat,long)) ;
    }

然后,更新您的 MapAppPage2 Contractor,如下所示。

public void MapAppPage2(string _lat, string _long){}

你可以做@Argon 提到的,或者你也可以存储信息,然后从存储中访问它。三个简单的方法来做到这一点-

  1. - 没有比这更容易的了

  2. Publisher-subscriber pattern - 更专业的方式 具有属性的静态 class - 可能会根据您的用例工作。按照 u/kneticz 所述实施,但请注意,如果应用程序被终止,它会中断,因为 class 的值未存储

  3. 使用静态 class - 如下所示: 我会不惜一切代价避免将数据传递给视图,它会很快变得难以管理,如果您现在需要整理,您可以存储一个 class,每个页面都可以将其用作静态 class。所以新建一个文件 Coordinates:

public static class Coordinates()
{
    public static string Longitude {get; set;}
    public static string Latitude {get; set;}
}

在第一页中设置静态 属性 的值,如下所示:

Coordinates.Longitude = "86.124124";
Coordinates.Latitude = "25.352552";

然后在您的其他页面中,使用获取静态 属性 的值,如下所示: var 纬度 = Coordinates.Latitude; var 经度 = Coordinates.Longitude; 另外,您可能想使用 double/float 而不是字符串。