TOC

This article has been localized into Turkish by the community.

Temel Kontroller:

Label Kontrolü

En basit haliyle Label kontrolü, diğer bir makalede gördüğümüz TextBlock'a çok benzer. Hemen fark edebileceğiniz gibi Label, Text property'si yerine Content property'sini kullanır. Bu nedenle sadece metni değil, herhangi başka bir tür kontrolü de direkt olarak içine koyabilirsiniz. Bu içerik aşağıdaki ilk ve basit örnekte görebileceğiniz gibi bir string de olabilir:

<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LabelControlSample" Height="100" Width="200">
    <Grid>
		<Label Content="This is a Label control." />
	</Grid>
</Window>

Label hakkında fark etmiş olabileceğiniz diğer bir şey, default olarak soldan ve üstten bir miktar boşluk(padding) içerecek şekilde oluşturulmasıdır. TexBlock kontrolü için durum bu şekilde değildir, bunu manuel olarak yapmanız gerekir.

İçerik basit bir string değer olması durumunda, Label gerçekte bir TextBlock oluşturacak ve içinde bu metni gösterecektir.

Label ve TextBlock kontrolü karşılaştırması

Peki bütün bunlara rağmen biz neden bir Label kullanmak isteyebiliriz? Label ve TextBlock arasında bir kaç önemli fark bulunmaktadır. TextBlock, sadece string değerleri render ederken, Label ayrıca aşağıdakilere de izin verir:

  • Border tanımlama
  • Resim v.b. farklı kontrolleri render etme
  • ContentTemplate property'si aracılığı ile template kullanımı
  • Erişim anahtarları(access keys) kullanarak bağlantılı kontrollere fokus vermek

Son madde TextBlock yerine Label kontrolünü kullanmak için ana sebeplerden biridir. Basit bir metni oluşturmak istediğiniz çoğu durumda daha hafif ve performanslı olan TextBlock kontrolünü kullanmalısınız.

Label ve hızlı erişim tuşları.

Diğer işletim sistemlerinde olduğu gibi Windows'ta da, [Alt] tuşu basılıyken bir karaktere basarak bir iletişim kutusundaki istediğiniz bir kontrole erişmek yaygın bir kullanımdır. [Alt] tuşunu basılı tuttuğunuzda basılacak karakter vurgulanır. Label bunu desteklerken, TextBlock kontrolü bu fonksiyonu desteklemez. Bu, kontrol etiketleri için Label'ı mükemmel bir seçim haline getirir. Bunun bir örneğini uygulamada görelim:

<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LabelControlSample" Height="180" Width="250">
	<StackPanel Margin="10">
		<Label Content="_Name:" Target="{Binding ElementName=txtName}" />
		<TextBox Name="txtName" />
		<Label Content="_Mail:" Target="{Binding ElementName=txtMail}" />
		<TextBox Name="txtMail" />
	</StackPanel>
</Window>

Bu ekran görüntüsü Alt tuşu basıldığında bizim örnek diyalog penceremizin durumunu gösteriyor. [Alt] tuşu basılıyken N ya da M tuşuna basmayı deneyin. Fokusun iki textbox arasında değiştiğini göreceksiniz.

Burada bir kaç yeni kavram var. Her şeyden önce, bir erişim tuşunu karakterden önce altçizgi (_) koyarak tanımlarız. İlk karakter olmak zorunda değildir, label içeriğinin her hangi bir karakteri olabilir. Genel uygulama daha önce kullanılmamış ilk karakterin kullanılmasıdır.

Label ve ilgili kontrolü bağlamak için Target özelliğini kullanırız. Bunun için daha sonra açıklayacağımız şekilde ElementName özelliğini kullanan bir standart WPF veri bağlaması kullanırız. Veri bağlama işlemi kontrolün ismi üzerinden yapıldığı için bu ismi değiştirdiğinizde veri bağlamayı da değiştirmeniz gerekir.

Kotrolleri Label içinde kullanma

Daha önce bahsettik, Label kontrolü tüm faydalarını barındırmaya devam ederken diğer kontrolleri de içerebilir. Şimdi bir örnekte bir resim ve biraz yazı barındırırken aynı anda Label özelliklerini kullanmaya devam edelim:

<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlAdvancedSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LabelControlAdvancedSample" Height="180" Width="250">
	<StackPanel Margin="10">
		<Label Target="{Binding ElementName=txtName}">
			<StackPanel Orientation="Horizontal">
				<Image Source="http://cdn1.iconfinder.com/data/icons/fatcow/16/bullet_green.png" />
				<AccessText Text="_Name:" />
			</StackPanel>
		</Label>
		<TextBox Name="txtName" />
		<Label Target="{Binding ElementName=txtMail}">
			<StackPanel Orientation="Horizontal">
				<Image Source="http://cdn1.iconfinder.com/data/icons/fatcow/16/bullet_blue.png" />
				<AccessText Text="_Mail:" />
			</StackPanel>
		</Label>
		<TextBox Name="txtMail" />
	</StackPanel>
</Window>

Bu basit bir metin içeren önceki örneğin imaj ve bir miktar metin içeren biraz genişletilmiş versiyonu (accessText kontrolü içinde label için erişim tuşu kullanabiliriz) Her iki kontrol de, Label diğer ContentControl türevleri gibi sadece bir child kontrole ev sahipliği yapabildiği için yatay StackPanel içinde bulunuyor.

Bu eğitimden daha sonra açıklanan Image kontrolünü başka bir adresten çağırmak, çoğu gerçek hayat uygulaması için iyi bir fikir değildir, burada sadece nasıl kullanılacağını göstermek amaçlı kullanılmıştır.

Sonuç

Çoğu durumda Etiket kontrolü tam olarak adının ima ettiği şeyi yapar: diğer kontroller için bir etiket olarak durur. Bu onun asıl amacıdır. Pek çok farklı durumda TextBlock ya da WPF'nin sunduğu diğer metin taşıyıcıları (container) kullanabilirsiniz


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!