0

我有一个要求,我需要导航到在我的 PCL 应用程序的核心项目中创建的另一个活动或页面。我检查的所有样本都将我带到使用 URI 的网站。我应该在下面的代码中进行哪些更改,以便在单击 pin 时导航到应用程序中的不同页面?

public class CustomMapRenderer : MapRenderer, GoogleMap.IInfoWindowAdapter
{
    ...

    void OnInfoWindowClick(object sender, GoogleMap.InfoWindowClickEventArgs e)
    {
        var url = Android.Net.Uri.Parse(customPin.Url);
        var intent = new Intent(Intent.ActionView, url);
        intent.AddFlags(ActivityFlags.NewTask);
        Android.App.Application.Context.StartActivity(intent);
    }
}
4

2 回答 2

0

您通常在 PCL 中回调您的自定义地图并让它处理导航。

我这样做的方式是:

1) 将 ICommand 类型的可绑定属性添加到自定义地图

   public static readonly BindableProperty MapClickedCommandProperty = BindableProperty.Create(
        nameof(MapClickedCommand),
        typeof(ICommand),
        typeof(CustomMap));

    public ICommand MapClickedCommand
    {
        get { return (ICommand)GetValue(MapClickedCommandProperty); }
        set { SetValue(MapClickedCommandProperty, value); }
    }

2) 向自定义地图添加一个公共方法,该方法将由自定义渲染器调用

public void RaiseMapClicked(Url url)
{
    MapClickedCommand?.Execute(url);
}

3) 在 OnInfoWindowClick 的自定义渲染器中调用公共方法

var url = Android.Net.Uri.Parse(customPin.Url);
var formsMap = Element as CustomMap;
formsMap.RaiseMapClicked(url);

这允许您将命令绑定到自定义地图并处理视图模型中的 Url。

于 2017-10-24T23:56:19.263 回答
0

每当使用 Xamarin MessagingCenter单击图钉时,您都可以从自定义 MapRenderer 发送消息。在此处查看我对类似问题的回答

于 2017-10-25T16:10:27.570 回答