我想在WIN手机xaml中创建带有点击可能性的标签
<HyperlinkButton Content="My Text to click"/>
是否有可能在Xamarin.Forms中执行此操作?
我发现了这一点但不一样:
https://github.com/XLabs/Xamarin-Forms-Labs/wiki/HyperLinkLabel
答案 0 :(得分:15)
我采用更标准的方法并使用Button
。只需设置背景以匹配您的应用背景并删除边框。然后就不需要额外的TapGestureRecongniser
代码了。 (下面的伪代码:)
的Xaml:
<Button Text="Click Me!" Background= "YourAppBackground" BorderWidth="0" Clicked="OnButtonClicked" />
代码隐藏:
void OnButtonClicked(object sender, EventArgs args)
{
//Open your link in here
}
答案 1 :(得分:13)
我建议您使用GestureRecognizers
并在标签上添加Tap Gesture
。 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
是View
类的公共属性,Label
继承自该属性。见here
答案 2 :(得分:1)
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");
}
答案 3 :(得分:0)
是的,您可以使用Button Clicked或TapGestureRecognizer。 如果要重定向到站点,可以使用WebView。 如果您想直接进入您自己的Native页面: 如果您使用的是NavigationPage,则可以使用 Navigation.PushAsync(new Page()); 如果您不使用NavigationPage并想要更改MainPage: App.Current.MainPage = new MyContentPage();
答案 4 :(得分:0)
这是我用来将标签作为链接的类:
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)) });
}
}
有关更多选项,有关creating a hyperlink in Xamarin Forms的答案可能会有用。
答案 5 :(得分:0)
我这样做 - &gt;创建以下类:
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
};
答案 6 :(得分:0)
如果你想要时尚的按钮(使它像超链接 - 带下划线)你想实现自定义渲染器:
将此添加到xamarin.project
using Xamarin.Forms;
namespace xamarin.Mobile.Controls
{
public class HyperlinkButton : Button
{
public HyperlinkButton()
{
}
}
}
将渲染器实现到IOS项目:
using System.ComponentModel;
using xamarin.Mobile.IOS;
using Foundation;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(xamarin.Mobile.Controls.HyperlinkButton), typeof(HyperlinkButtonRenderer))]
namespace xamarin.Mobile.IOS
{
public class HyperlinkButtonRenderer : ButtonRenderer
{
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (Control != null)
{
//Set attribute for underlineing information links
var underlineAttr = new UIStringAttributes { UnderlineStyle = NSUnderlineStyle.Single };
Control.SetAttributedTitle(new NSAttributedString(Control.CurrentTitle, underlineAttr), UIControlState.Normal);
}
}
}
}
我只为iOS添加了渲染器。如果您想支持其他版本 - 您必须将渲染器添加到此平台。
并在xcml中使用它:
<ContentPage ...
xmlns:control="clr-namespace:xamarin.Mobile.Controls">
<control:HyperlinkButton Text="Cancel" Clicked="CancelClicked"/>
</ContentPage>