Xamarin.Forms Etiketin
Metni görüntüle
LabelGörünüm, tek ve çok satırlı metin görüntülemek için kullanılır. Etiketlerde metin süslemeleri, renkli metinler ve özel yazı tipleri (aileleri, Boyutlar ve Seçenekler) kullanabilirsiniz.
Metin süslemeleri
LabelLabel.TextDecorations Özelliği bir veya daha fazla numaralandırma üyesine ayarlayarak alt çizgi ve üstü metin süslemeleri örneklere uygulanabilir TextDecorations :
NoneUnderlineStrikethrough
Aşağıdaki XAML örneği, özelliği ayarlamayı gösterir Label.TextDecorations :
<Label Text="This is underlined text." TextDecorations="Underline" />
<Label Text="This is text with strikethrough." TextDecorations="Strikethrough" />
<Label Text="This is underlined text with strikethrough." TextDecorations="Underline, Strikethrough" />
Eşdeğer C# kodu:
var underlineLabel = new Label { Text = "This is underlined text.", TextDecorations = TextDecorations.Underline };
var strikethroughLabel = new Label { Text = "This is text with strikethrough.", TextDecorations = TextDecorations.Strikethrough };
var bothLabel = new Label { Text = "This is underlined text with strikethrough.", TextDecorations = TextDecorations.Underline | TextDecorations.Strikethrough };
Aşağıdaki ekran görüntülerinde TextDecorations örneklere uygulanan numaralandırma üyeleri gösterilmektedir Label :

Not
Metin süslemeleri da Span örneklere uygulanabilir. Sınıfı hakkında daha fazla bilgi için Span bkz. Span.
Metin dönüştürme
, Özelliği LabelText sabit listesinin bir değeri ayarlanarak özelliğinde depolanan metnin büyük küçük harflerini dönüştürebilir TextTransformTextTransform . Bu numaralandırma dört değere sahiptir:
Nonemetnin dönüştürülmeyeceğini gösterir.Defaultplatformun varsayılan davranışının kullanılacağını gösterir. Bu, özelliğin varsayılan değeridirTextTransform.Lowercasemetnin küçük harfe dönüştürüleceğini gösterir.Uppercasemetnin büyük harfe dönüştürüleceğini gösterir.
Aşağıdaki örnek, metnin büyük harfe dönüştürülmesini göstermektedir:
<Label Text="This text will be displayed in uppercase."
TextTransform="Uppercase" />
Eşdeğer C# kodu:
Label label = new Label
{
Text = "This text will be displayed in uppercase.",
TextTransform = TextTransform.Uppercase
};
Karakter aralığı
LabelÖzelliği bir değere ayarlayarak, örneklere karakter aralığı uygulanabilir Label.CharacterSpacingdouble :
<Label Text="Character spaced text"
CharacterSpacing="10" />
Eşdeğer C# kodu:
Label label = new Label { Text = "Character spaced text", CharacterSpacing = 10 };
Sonuç olarak, tarafından görüntülenen metindeki karakterlerin LabelCharacterSpacing cihazdan bağımsız birimler birbirinden farklı olur.
Yeni satırlar
XAML 'den yeni bir satıra metin zorlamak için iki ana teknik vardır Label :
- "#10;" olan Unicode satırı akış karakterini kullanın & .
- Özellik öğesi söz dizimini kullanarak metninizi belirtin.
Aşağıdaki kod her iki teknikte bir örnek göstermektedir:
<!-- Unicode line feed character -->
<Label Text="First line Second line" />
<!-- Property element syntax -->
<Label>
<Label.Text>
First line
Second line
</Label.Text>
</Label>
C# dilinde metin, "\n" karakteri ile yeni bir satıra zorlanabilir:
Label label = new Label { Text = "First line\nSecond line" };
Renkler
Etiketler, bağlanılabilir Xamarin_Forms _Label_TextColor "Data-LinkType =" Absolute-path ">özelliği aracılığıyla özel metin rengi kullanacak şekilde ayarlanabilir TextColor .
Renklerin her platformda kullanılabilir olmasını sağlamak için özel dikkatli olmanız gerekir. Her platformda metin ve arka plan renkleri için farklı varsayılanlar bulunduğundan, her biri üzerinde çalışan bir varsayılan değer seçmek için dikkatli olmanız gerekir.
Aşağıdaki XAML örneği, bir öğesinin metin rengini ayarlar Label :
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.LabelPage"
Title="Label Demo">
<StackLayout Padding="5,10">
<Label TextColor="#77d065" FontSize = "20" Text="This is a green label." />
</StackLayout>
</ContentPage>
Eşdeğer C# kodu:
public partial class LabelPage : ContentPage
{
public LabelPage ()
{
InitializeComponent ();
var layout = new StackLayout { Padding = new Thickness(5,10) };
var label = new Label { Text="This is a green label.", TextColor = Color.FromHex("#77d065"), FontSize = 20 };
layout.Children.Add(label);
this.Content = layout;
}
}
Aşağıdaki ekran görüntüleri, özelliği ayarlamanın sonucunu gösterir TextColor :

Renkler hakkında daha fazla bilgi için bkz. renkler.
Yazı Tipleri
Yazı tiplerini bir üzerinde belirtme hakkında daha fazla bilgi için Label bkz. Label.
Kesme ve kaydırma
Etiketler, özelliği tarafından sunulan çeşitli yollarla bir satıra sığamayacak metni işlemek üzere ayarlanabilir LineBreakMode . LineBreakMode , aşağıdaki değerlere sahip bir numaralandırmadır:
- Yayın kesilmesi – son gösterilen metnin kafasını keser.
- Karakterkaydırma : metni bir karakter sınırında yeni bir satıra kaydırır.
- MiddleTruncation – metnin başlangıcını ve sonunu, ortalanın yerine üç nokta koyarak görüntüler.
- NoWrap : metni sarmaz, yalnızca bir satıra sığacak kadar çok metin görüntüler.
- Uyarlankesilmesi – metnin başlangıcını gösterir ve sona kesiliyor.
- WordWrap : metni sözcük sınırında kaydırır.
Belirli sayıda satırı görüntüleme
Özelliği bir değere ayarlanarak, bir tarafından gösterilecek satır sayısı Label belirtilebilir Label.MaxLinesint :
MaxLines-1 olduğunda, varsayılan değeri olanLabelXamarin_Forms değeriMaxLines"Data-LinkType =" absolute-path ">LineBreakModeözelliğini, yalnızca bir satır, büyük olasılıkla kesilmiş veya tüm metinlere sahip tüm satırları gösterecek şekilde _Label_LineBreakMode.- 0 olduğunda,
MaxLinesLabelgösterilmez. MaxLines1 olduğunda sonuç, Xamarin_FormsMaxLines_Label_LineBreakMode "Data-LinkType =" Absolute-path ">LineBreakModeözelliğiNoWrap,, veya olarakHeadTruncationMiddleTruncationTailTruncationayarlanarak aynıdır. Bununla birlikte,LabelLabel"Data-LinkType =" Absolute-path ">özelliği, varsa,LineBreakModeüç nokta yerleştirilmesiyle ilgili olarak Xamarin_Forms _Label_LineBreakMode değerine göre değişir.MaxLines1 ' den büyükse,Labelbelirtilen sayıda satıra kadar görüntüler Xamarin_Forms, bu daMaxLines"Data-LinkType =" absolute-path ">LineBreakModeözelliği uygunsa üç nokta yerleştirilmesiyle ilgili olarak _Label_LineBreakMode. Ancak,MaxLinesXamarin_FormsMaxLines_Label_LineBreakMode "Data-LinkType =" Absolute-path ">LineBreakModeözelliği olarak ayarlandıysa, özelliğinin 1 ' den büyük bir değere ayarlanması etkisizdirNoWrap.
Aşağıdaki XAML örneği, MaxLines üzerinde özelliği ayarlamayı gösterir Label :
<Label Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. In facilisis nulla eu felis fringilla vulputate. Nullam porta eleifend lacinia. Donec at iaculis tellus."
LineBreakMode="WordWrap"
MaxLines="2" />
Eşdeğer C# kodu:
var label =
{
Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In facilisis nulla eu felis fringilla vulputate. Nullam porta eleifend lacinia. Donec at iaculis tellus.", LineBreakMode = LineBreakMode.WordWrap,
MaxLines = 2
};
Aşağıdaki ekran görüntüleri, MaxLines metnin 2 ' den fazla satır kaplamasına yetecek kadar uzun olduğu durumlarda özelliği 2 ' ye ayarlamanın sonucunu gösterir:

HTML görüntüleme
LabelSınıfında, TextTypeLabel Örneğin düz metın mi yoksa HTML metni mi görüntülemesi gerektiğini belirleyen bir özelliği vardır. Bu özellik, numaralandırmanın üyelerinden birine ayarlanmalıdır TextType :
TextöğesininLabeldüz metni gösterir ve özelliğinin varsayılan değeridirLabel.TextType.Html' ınLabelHTML metnini görüntüleyeceği anlamına gelir.
Bu nedenle, Label örnekleri özelliğini olarak ayarlayarak Label.TextTypeHtml ve Label.Text özelliğini bir HTML DIZESINE ayarlayarak, örnekler HTML görüntüleyebilir:
Label label = new Label
{
Text = "This is <strong style=\"color:red\">HTML</strong> text.",
TextType = TextType.Html
};
Yukarıdaki örnekte, HTML 'deki çift tırnak karakterlerinin sembol kullanılarak kaçış olması gerekir \ .
XAML 'de, ve sembolleri ek kaçış nedeniyle HTML dizeleri okunamaz hale gelebilir <> :
<Label Text="This is <strong style="color:red">HTML</strong> text."
TextType="Html" />
Alternatif olarak, daha fazla okunabilirlik için HTML bir bölümde satır içine alınabilir CDATA :
<Label TextType="Html">
<![CDATA[
This is <strong style="color:red">HTML</strong> text.
]]>
</Label>
Bu örnekte, Label.Text Özelliği bölümünde satır içine alınmış HTML dizesine ayarlanır CDATA . TextÖzelliği sınıfı için olduğundan, bu işe yarar ContentPropertyLabel .
Aşağıdaki ekran görüntülerinde Label HTML görüntüleme gösterilmektedir:

Önemli
HTML 'nin bir içinde görüntülenmesi, Label temel alınan platformun DESTEKLEDIĞI HTML etiketleriyle sınırlıdır.
Biçimli metin
Etiketler FormattedText , aynı görünümde birden çok yazı tipi ve renkle metin sunumuna izin veren bir Xamarin_Forms _Label_FormattedText "Data-LinkType =" absolute-path ">özelliğini kullanıma sunar.
FormattedTextÖzelliği FormattedString , bir veya daha fazla örneği kapsayan, Span Xamarin_Forms FormattedText _FormattedString_Spans "Data-LinkType =" Absolute-path ">özelliği aracılığıyla ayarlanan türüdür Spans . Aşağıdaki Span Özellikler görsel görünümü ayarlamak için kullanılabilir:
- _Span_BackgroundColor "Data-LinkType =" Absolute-path ">
BackgroundColor: yayılma arka planının rengi. CharacterSpacing, türündedouble, metnin karakterleri arasındaki aralıkdırSpan.- Xamarin_Forms _Span_Font "Data-LinkType =" Absolute-path ">
Font: yayılma alanındaki metnin yazı tipi. - Xamarin_Forms _Span_FontAttributes "Data-LinkType =" Absolute-path ">
FontAttributes: yayılma alanındaki metnin yazı tipi öznitelikleri. - Xamarin_Forms _Span_FontFamily "Data-LinkType =" Absolute-path ">
FontFamily: yayılma alanındaki metnin yazı tipinin ait olduğu yazı tipi ailesi. - Xamarin_Forms _Span_FontSize "Data-LinkType =" Absolute-path ">
FontSize: yayılma alanındaki metnin yazı tipinin boyutu. - Xamarin_Forms _Span_ForegroundColor "Data-LinkType =" Absolute-path ">
ForegroundColor: yayılma alanındaki metnin rengi. Bu özellik artık kullanılmıyor ve bu özellik tarafından değiştirildiTextColor. - Xamarin_Forms _Span_LineHeight "Data-LinkType =" Absolute-path ">
LineHeight-yayılma alanının varsayılan çizgi yüksekliğine uygulanacak çarpan. Daha fazla bilgi için bkz. çizgi yüksekliği. - Xamarin_Forms _Span_Style "Data-LinkType =" Absolute-path ">
Style: yayılma için uygulanacak stil. - Xamarin_Forms _Span_Text "Data-LinkType =" Absolute-path ">
Text– span metni. - Xamarin_Forms _Span_TextColor "Data-LinkType =" Absolute-path ">
TextColor: yayılma alanındaki metnin rengi. TextDecorations-yayılma alanındaki metne uygulanacak süslemeleri. Daha fazla bilgi için bkz. metin süslemeleri.
Xamarin_Forms _Span_BackgroundColor "Data-LinkType =" Absolute-path ">BackgroundColor , Xamarin_Forms BackgroundColor _Span_Text" Data-linktype = "mutlak yol" >Text ve Xamarin_Forms _Span_Text "Data-LinkType =" Absolute-path ">Text bağlanabilir özellikler varsayılan bağlama moduna sahiptir OneWay . Bu bağlama modu hakkında daha fazla bilgi için bağlama modu kılavuzundaki varsayılan bağlama moduna bakın.
Ayrıca, Xamarin_Forms _GestureElement_GestureRecognizers "Data-LinkType =" Absolute-path ">GestureRecognizers özelliği, üzerinde hareketlerine yanıt verecek hareket tanıyıcılarının bir koleksiyonunu tanımlamak için kullanılabilir Span .
Not
HTML 'yi bir içinde göstermek mümkün değildir Span .
Aşağıdaki XAML örneği, FormattedText üç örneklerden oluşan bir özelliği gösterir Span :
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.LabelPage"
Title="Label Demo - XAML">
<StackLayout Padding="5,10">
...
<Label LineBreakMode="WordWrap">
<Label.FormattedText>
<FormattedString>
<Span Text="Red Bold, " TextColor="Red" FontAttributes="Bold" />
<Span Text="default, " Style="{DynamicResource BodyStyle}">
<Span.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}" />
</Span.GestureRecognizers>
</Span>
<Span Text="italic small." FontAttributes="Italic" FontSize="Small" />
</FormattedString>
</Label.FormattedText>
</Label>
</StackLayout>
</ContentPage>
Eşdeğer C# kodu:
public class LabelPageCode : ContentPage
{
public LabelPageCode ()
{
var layout = new StackLayout{ Padding = new Thickness (5, 10) };
...
var formattedString = new FormattedString ();
formattedString.Spans.Add (new Span{ Text = "Red bold, ", ForegroundColor = Color.Red, FontAttributes = FontAttributes.Bold });
var span = new Span { Text = "default, " };
span.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(async () => await DisplayAlert("Tapped", "This is a tapped Span.", "OK")) });
formattedString.Spans.Add(span);
formattedString.Spans.Add (new Span { Text = "italic small.", FontAttributes = FontAttributes.Italic, FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)) });
layout.Children.Add (new Label { FormattedText = formattedString });
this.Content = layout;
}
}
Önemli
Xamarin_Forms _Span_Text "Data-LinkType =" Absolute-path ">Text özelliği Span veri bağlama aracılığıyla ayarlanabilir. Daha fazla bilgi için bkz. Veri Bağlama.
Bir Span Ayrıca, Span "Data-LinkType =" Absolute-path ">koleksiyonuna _GestureElement_GestureRecognizers" Data-LinkType = "mutlak yol" koleksiyonuna Xamarin_Forms eklenen herhangi bir hareketlerine yanıt verebileceğini unutmayın GestureRecognizers . Örneğin, TapGestureRecognizer Yukarıdaki kod örneklerinde ikincisine bir eklenmiştir Span . Bu nedenle, bu Span dokunduğunda, TapGestureRecognizerICommandSpan "Data-LinkType =" Absolute-path ">özelliği tarafından tanımlanan Xamarin_Forms _TapGestureRecognizer_Command çalıştırılarak yanıt verilir Command . Hareket tanıyıcıları hakkında daha fazla bilgi için bkz Xamarin.Forms Gestures ..
Aşağıdaki ekran görüntüleri, FormattedString özelliği üç örneğe ayarlamanın sonucunu gösterir Span :

Çizgi yüksekliği
A ve a 'nın dikey yüksekliği, LabelSpan Xamarin_Forms Label _Label_LineHeight "Data-LinkType =" absolute-path ">Label.LineHeight özelliği veya Xamarin_Forms Span _Span_LineHeight" Data-LinkType = "Absolute-path" >Span.LineHeight bir double değere ayarlanarak özelleştirilebilir. iOS ve Android 'de bu değerler orijinal çizgi yüksekliğinin çeşitçilerine sahiptir Evrensel Windows Platformu (UWP) Label.LineHeight özellik değeri, etiket yazı tipi boyutunun bir çarpanı olur.
Not
- İOS 'ta Xamarin_Forms _Label_LineHeight "Data-LinkType =" Absolute-path ">
Label.LineHeightve Xamarin_FormsLabel.LineHeight_Span_LineHeight" Data-LinkType = "Absolute-path" >Span.LineHeightÖzellikleri, tek bir satıra sığan metnin satır yüksekliğini ve birden çok satıra kaydırılan metni değiştirir. - Android 'de, Xamarin_Forms _Label_LineHeight "Data-LinkType =" Absolute-path ">
Label.LineHeightve Xamarin_FormsLabel.LineHeight_Span_LineHeight" Data-LinkType = "Absolute-path" >Span.LineHeightözellikleri yalnızca birden çok satıra kaydırılan metnin çizgi yüksekliğini değiştirir. - UWP 'de, Xamarin_Forms _Label_LineHeight "Data-LinkType =" Absolute-path ">
Label.LineHeightözelliği, birden çok satıra kaydırılan metnin satır yüksekliğini değiştirir ve Xamarin_FormsLabel.LineHeight_Span_LineHeight" Data-LinkType = "Absolute-path" >Span.LineHeightözelliğinin etkisi yoktur.
Aşağıdaki XAML örneği, Xamarin_Forms _Label_LineHeight "Data-LinkType =" Absolute-path ">LineHeight özelliğinin bir örneğini ayarlamayı gösterir Label :
<Label Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. In facilisis nulla eu felis fringilla vulputate. Nullam porta eleifend lacinia. Donec at iaculis tellus."
LineBreakMode="WordWrap"
LineHeight="1.8" />
Eşdeğer C# kodu:
var label =
{
Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In facilisis nulla eu felis fringilla vulputate. Nullam porta eleifend lacinia. Donec at iaculis tellus.", LineBreakMode = LineBreakMode.WordWrap,
LineHeight = 1.8
};
Aşağıdaki ekran görüntüleri, _Label_LineHeight "Data-LinkType =" Absolute-path ">Label.LineHeight özelliğinin 1,8 olarak ayarlanmasını Xamarin_Forms sonucunu gösterir:

Aşağıdaki XAML örneği, Xamarin_Forms _Span_LineHeight "Data-LinkType =" Absolute-path ">LineHeight özelliğinin bir örneğini ayarlamayı gösterir Span :
<Label LineBreakMode="WordWrap">
<Label.FormattedText>
<FormattedString>
<Span Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. In a tincidunt sem. Phasellus mollis sit amet turpis in rutrum. Sed aliquam ac urna id scelerisque. "
LineHeight="1.8"/>
<Span Text="Nullam feugiat sodales elit, et maximus nibh vulputate id."
LineHeight="1.8" />
</FormattedString>
</Label.FormattedText>
</Label>
Eşdeğer C# kodu:
var formattedString = new FormattedString();
formattedString.Spans.Add(new Span
{
Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In a tincidunt sem. Phasellus mollis sit amet turpis in rutrum. Sed aliquam ac urna id scelerisque. ",
LineHeight = 1.8
});
formattedString.Spans.Add(new Span
{
Text = "Nullam feugiat sodales elit, et maximus nibh vulputate id.",
LineHeight = 1.8
});
var label = new Label
{
FormattedText = formattedString,
LineBreakMode = LineBreakMode.WordWrap
};
Aşağıdaki ekran görüntüleri, _Span_LineHeight "Data-LinkType =" Absolute-path ">Span.LineHeight özelliğinin 1,8 olarak ayarlanmasını Xamarin_Forms sonucunu gösterir:

İç Boşluk
Padding öğesi ve onun alt öğeleri arasındaki boşluğu temsil eder ve öğeyi kendi içeriğinden ayırmak için kullanılır. LabelÖzelliği bir değere ayarlanarak doldurma örneklere uygulanabilir Label.PaddingThickness :
<Label Padding="10">
<Label.FormattedText>
<FormattedString>
<Span Text="Lorem ipsum" />
<Span Text="dolor sit amet." />
</FormattedString>
</Label.FormattedText>
</Label>
Eşdeğer C# kodu:
FormattedString formattedString = new FormattedString();
formattedString.Spans.Add(new Span
{
Text = "Lorem ipsum"
});
formattedString.Spans.Add(new Span
{
Text = "dolor sit amet."
});
Label label = new Label
{
FormattedText = formattedString,
Padding = new Thickness(20)
};
Önemli
İOS 'ta, Label özelliği ayarlayan bir oluşturulduğunda Padding , doldurma uygulanır ve doldurma değeri daha sonra güncelleştirilir. Ancak, Label özelliği ayarlanmamış bir oluşturulduğunda Padding , daha sonra ayarlamaya çalışmak hiçbir etkiye sahip olmaz.
Android ve Evrensel Windows Platformu, Padding özellik değeri Label oluşturulduğunda veya daha sonra belirtilebilir.
Doldurma hakkında daha fazla bilgi için bkz. kenar boşlukları ve doldurma.
Köprüler
Ve örnekleri tarafından görüntülenecek metin, LabelSpan aşağıdaki yaklaşımla birlikte köprülere açılabilir:
TextColorTextDecorationVeya özelliklerini ayarlayınLabelSpan.TapGestureRecognizerTapGestureRecognizerGestureRecognizersLabelSpanXamarin_Forms _TapGestureRecognizer_Command "data-LinkType =" Absolute-path ">Commandözelliği bir öğesine bağlandığındaICommandve Xamarin_FormsGestureRecognizers_TapGestureRecognizer_CommandParameter" Data-linktype = "Absolute-path" >CommandParameterözelliği açılacak URL 'yi içerdiği Xamarin_Forms _GestureElement_GestureRecognizers "Data-LinkType =" Absolute-path ">koleksiyonuna ekleyin.ICommandTarafından yürütülecek öğesini tanımlayınTapGestureRecognizer.- Tarafından yürütülecek kodu yazın
ICommand.
Köprü gösterileri örneğinden alınan aşağıdaki kod örneği, içeriği birden çok örnekten ayarlanmış olan bir gösterir Span :
<Label>
<Label.FormattedText>
<FormattedString>
<Span Text="Alternatively, click " />
<Span Text="here"
TextColor="Blue"
TextDecorations="Underline">
<Span.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}"
CommandParameter="https://docs.microsoft.com/xamarin/" />
</Span.GestureRecognizers>
</Span>
<Span Text=" to view Xamarin documentation." />
</FormattedString>
</Label.FormattedText>
</Label>
Bu örnekte, birinci ve üçüncü Span örnekler metin oluşturur, ikincisi de Span bir bant halinde köprüyü temsil eder. Metin rengi mavi olarak ayarlanmış ve metin dekorasyonu alt çizgi içeriyor. Bu, aşağıdaki ekran görüntülerinde gösterildiği gibi bir köprünün görünümünü oluşturur:
Köprü dokunduğunda, TapGestureRecognizerICommandTapGestureRecognizer _TapGestureRecognizer_Command "Data-LinkType =" absolute-path ">özelliği tarafından tanımlanan Xamarin_Forms yürüterek yanıt verir Command . Ayrıca, Xamarin_Forms tarafından belirtilen URL _TapGestureRecognizer_CommandParameter "Data-LinkType =" Absolute-path ">CommandParameter özelliği ICommand parametresi olarak öğesine geçirilir.
XAML sayfası için arka plan kodu, TapCommand uygulamayı içerir:
public partial class MainPage : ContentPage
{
// Launcher.OpenAsync is provided by Xamarin.Essentials.
public ICommand TapCommand => new Command<string>(async (url) => await Launcher.OpenAsync(url));
public MainPage()
{
InitializeComponent();
BindingContext = this;
}
}
TapCommandLauncher.OpenAsync Yöntemini yürütür, Xamarin_Forms TapCommand "Data-LinkType =" absolute-path ">TapGestureRecognizer.CommandParameter özellik değerini parametre olarak geçirerek _TapGestureRecognizer_CommandParameter. Launcher.OpenAsyncYöntemi tarafından sağlanır Xamarin.Essentials ve URL 'yi bir Web tarayıcısında açar. Bu nedenle, köprünün sayfada dokunduğunda, bir Web tarayıcısının göründüğünü ve Köprüyle ilişkili URL 'ye gidildiği genel etki olur.
Yeniden kullanılabilir köprü sınıfı oluşturma
Bir köprü oluşturmaya yönelik önceki yaklaşım, uygulamanızda her köprünün her seferinde yinelenen kod yazılmasını gerektirir. Ancak, ve sınıflarının her ikisi de, LabelSpanHyperlinkLabelHyperlinkSpan hareket tanıyıcı ve metin biçimlendirme kodu eklenmiş şekilde, ve sınıfları oluşturmak için alt sınıflı olabilir.
Köprü gösterileri örneğinden alınan aşağıdaki kod örneği, bir sınıfı gösterir:
public class HyperlinkSpan : Span
{
public static readonly BindableProperty UrlProperty =
BindableProperty.Create(nameof(Url), typeof(string), typeof(HyperlinkSpan), null);
public string Url
{
get { return (string)GetValue(UrlProperty); }
set { SetValue(UrlProperty, value); }
}
public HyperlinkSpan()
{
TextDecorations = TextDecorations.Underline;
TextColor = Color.Blue;
GestureRecognizers.Add(new TapGestureRecognizer
{
// Launcher.OpenAsync is provided by Xamarin.Essentials.
Command = new Command(async () => await Launcher.OpenAsync(Url))
});
}
}
HyperlinkSpanSınıfı bir özelliği tanımlar Url ve ilişkili ve BindableProperty Oluşturucu köprü görünümünü belirler ve TapGestureRecognizer köprü dokunduğunda yanıt verir. Bir HyperlinkSpan dokunulduğunda, bir TapGestureRecognizerLauncher.OpenAsync Web tarayıcısında özelliği tarafından belirtilen URL 'yi açmak için yöntemini yürüterek yanıt verir Url .
HyperlinkSpanSınıfı, XAML 'e sınıfın bir örneği eklenerek tüketilebilir:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:HyperlinkDemo"
x:Class="HyperlinkDemo.MainPage">
<StackLayout>
...
<Label>
<Label.FormattedText>
<FormattedString>
<Span Text="Alternatively, click " />
<local:HyperlinkSpan Text="here"
Url="https://docs.microsoft.com/appcenter/" />
<Span Text=" to view AppCenter documentation." />
</FormattedString>
</Label.FormattedText>
</Label>
</StackLayout>
</ContentPage>
Stil oluşturma etiketleri
Önceki bölümlerde, Label örnek başına ayar ve Özellikler ele alınmıştır Span . Ancak, özellik kümeleri bir veya daha fazla görünüme tutarlı olarak uygulanan tek bir stil halinde gruplandırılabilir. Bu, kodun okunabilirliğini artırabilir ve tasarım değişikliklerinin uygulanması kolaylaşır. Daha fazla bilgi için bkz. Stiller.
Örneği indirin