TOC

This article is currently in the process of being translated into Turkish (~74% done).

Temel Kontroller:

The Label control

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
  • Imaj 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.

We use the Target property to connect the Label and the designated control. We use a standard WPF binding for this, using the ElementName property, all of which we will describe later on in this tutorial. The binding is based on the name of the control, so if you change this name, you will also have to remember to change the binding.

Kotrolleri Label içinde kullanma

As already mentioned, the Label control allows you to host other controls, while still keeping the other benefits. Let's try an example where we have both an image and a piece of text inside the Label, while also having an access key for each of the labels:

<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.

Summary

Ç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!