2016-01-12 18 views

risposta

11

Io suggerirei di usare GestureRecognizers e l'aggiunta di un Tap Gesture a un'etichetta. Ref: here

var label = new Label() 
{ 
    Text="My Hyperlink" 
}; 
var tapGestureRecognizer = new TapGestureRecognizer(); 
tapGestureRecognizer.Tapped += (s, e) => { 
    // handle the tap 
}; 
label.GestureRecognizers.Add(tapGestureRecognizer); 

GestureRecognizer è una proprietà pubblica sulla View classe che eredita da Label. Vedere here

14

Avrei un approccio molto più standard e utilizzare uno Button. Basta impostare lo sfondo per abbinare lo sfondo della tua app e rimuovere il bordo. Quindi non è necessario il codice aggiuntivo TapGestureRecongniser. (Pseudo codice qui sotto :)

Xaml:

<Button Text="Click Me!" Background= "YourAppBackground" BorderWidth="0" Clicked="OnButtonClicked" /> 

codice sottostante:

void OnButtonClicked(object sender, EventArgs args) 
{ 
    //Open your link in here 
} 
+1

Come posso reindirizzare ad una pagina in questo metodo? –

0

Sì, è possibile utilizzare pulsante cliccato o TapGestureRecognizer. Se si desidera reindirizzare a un sito è possibile utilizzare WebView. Se si desidera dirigere verso la propria pagina nativa: Se si utilizza NavigationPage, è possibile utilizzare Navigation.PushAsync (new Page()); Se non si utilizza NavigationPage e si desidera modificare la pagina principale: App.Current.MainPage = new MyContentPage();

0

Questa è una classe che uso per avere un atto di un'etichetta come un link:

public class SimpleLinkLabel : Label 
{ 
    public SimpleLinkLabel(Uri uri, string labelText = null) 
    { 
     Text = labelText ?? uri.ToString(); 
     GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(() => Device.OpenUri(uri)) }); 
    } 
} 

Per ulteriori opzioni, questa risposta su creating a hyperlink in Xamarin Forms potrebbe essere utile.

0

codice XAML sarebbe la seguente:

<Label 
    Text="My Text to click" 
    HorizontalOptions="Center" > 

    <Label.GestureRecognizers> 
     <TapGestureRecognizer 
      Tapped="OnLabelTapped" 
      NumberOfTapsRequired="2" /> 
    </Label.GestureRecognizers> 
</Label> 

Nota: per impostazione predefinita, NumberOfTapsRequired è 1.

Poi nel file .cs, aggiungere il metodo OnLabelTapped.

public void OnLabelTapped(object sender, EventArgs args) 
{ 
    // Your code here 
    // Example: 
    // DisplayAlert("Message", "You clicked on the label", "OK"); 
} 
0

faccio questo -> creare la seguente classe:

public class ButtonAsLink : Button 
{ 
    public ButtonAsLink() 
    { 
     this.TextColor = Color.Blue; 
     this.BackgroundColor = Color.Transparent; 
     this.BorderWidth = 0; 
    } 
} 

Poi ovunque è necessario creare un pulsante di collegamento utilizzare questo:

SendButton = new ButtonAsLink() 
     { 
      Text = "Send Logs...", 
      VerticalOptions = LayoutOptions.Center 
     };