HyperlinkButton в С# XAMARIN.FORMS
Я хочу создать ярлык с возможностью щелчка, например, в WIN-телефоне xaml
<HyperlinkButton Content="My Text to click"/>
Есть ли возможность сделать это в Xamarin.Forms?
Я нашел это, но не то же самое:
https://github.com/XLabs/Xamarin-Forms-Labs/wiki/HyperLinkLabel
Ответы
Ответ 1
Я бы предложил использовать GestureRecognizers
и добавить Tap Gesture
к метке. Ссылка: здесь
var label = new Label()
{
Text="My Hyperlink"
};
var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
// handle the tap
};
label.GestureRecognizers.Add(tapGestureRecognizer);
GestureRecognizer
является общедоступным свойством класса View
, который наследует Label
. См. здесь
Ответ 2
Я бы взял гораздо более стандартный подход и использовал Button
. Просто установите фон в соответствии с фоном приложения и удалите границу. Тогда нет необходимости в дополнительном TapGestureRecongniser
коде. (Псевдокод ниже:)
Xaml:
<Button Text="Click Me!" Background= "YourAppBackground" BorderWidth="0" Clicked="OnButtonClicked" />
Code-Behind:
void OnButtonClicked(object sender, EventArgs args)
{
//Open your link in here
}
Ответ 3
Да, вы можете использовать кнопку Clicked или TapGestureRecognizer.
Если вы хотите перенаправить на сайт, вы можете использовать WebView.
Если вы хотите направить свою собственную страницу:
Если вы используете NavigationPage, вы можете использовать Navigation.PushAsync(новая страница());
Если вы не используете NavigationPage и хотите изменить MainPage: App.Current.MainPage = новый MyContentPage();
Ответ 4
Это класс, который я использую для обозначения метки как ссылки:
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)) });
}
}
Для получения дополнительных параметров этот ответ о создании гиперссылки в форматах Xamarin может оказаться полезным.
Ответ 5
Код XAML будет выглядеть следующим образом:
<Label
Text="My Text to click"
HorizontalOptions="Center" >
<Label.GestureRecognizers>
<TapGestureRecognizer
Tapped="OnLabelTapped"
NumberOfTapsRequired="2" />
</Label.GestureRecognizers>
</Label>
Примечание. По умолчанию NumberOfTapsRequired
равно 1.
Затем в вашем .cs
файле добавьте метод OnLabelTapped
.
public void OnLabelTapped(object sender, EventArgs args)
{
// Your code here
// Example:
// DisplayAlert("Message", "You clicked on the label", "OK");
}
Ответ 6
Я делаю это → создаю следующий класс:
public class ButtonAsLink : Button
{
public ButtonAsLink()
{
this.TextColor = Color.Blue;
this.BackgroundColor = Color.Transparent;
this.BorderWidth = 0;
}
}
Тогда везде вам нужно создать кнопку ссылки, используя это:
SendButton = new ButtonAsLink()
{
Text = "Send Logs...",
VerticalOptions = LayoutOptions.Center
};