2017-10-24 1 views
0

Ich habe eine Anforderung, wo ich zu einer anderen Aktivität oder Seite in meinem Kernprojekt meiner PCL-App erstellt werden muss. Die gesamte Stichprobe, die ich überprüft habe, führt mich über die URI zu einer Website. Was soll ich im unten stehenden Code ändern, damit ich zu verschiedenen Seiten in meiner App navigieren kann, wenn auf die PIN geklickt wird?Xamarin Formular Benutzerdefinierte Karte - Kann nicht zu einer anderen Seite in meiner App navigieren

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); 
    } 
} 
+0

Was meinen Sie "welchen Code soll ich ändern"? Funktioniert etwas nicht? Was? Was sollte passieren und was eigentlich? Warum haben Sie Ihre Frage mit Google Maps versehen, obwohl sie nichts damit zu tun hat? –

Antwort

0

Sie rufen im Allgemeinen zu Ihrer benutzerdefinierten Karte in der PCL zurück und lassen Sie es die Navigation behandeln.

So wie ich es tun, ist von:

1) auf die benutzerdefinierte Karte

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) eine bindbare Eigenschaft des Typs ICommand hinzufügen eine öffentliche Methode zum benutzerdefinierten Karte hinzufügen, die aufgerufen wird durch den benutzerdefinierten Renderer

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

3) in den benutzerdefinierten Renderer in Ihrem OnInfoWindowClick rufen Sie die öffentliche Methode

Damit können Sie einen Befehl an die benutzerdefinierte Zuordnung binden und die URL in Ihrem Ansichtsmodell verarbeiten.

Verwandte Themen