TOC

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

Basic controls:

The Label control

Label kontrol, dalam bentuknya yang paling sederhana, akan terlihat mirip dengan TextBlock yang kita bahas di artikel yang lain. Anda akan secepatnya menemukan bahwa sebagai pengganti property Text, Label memiliki property Content. Alasannya adalah bahwa Label dapat memuat kontrol apa saja didalamnya, selain dari hanya teks. Label juga dapat saja memuat sebuah teks (string), seperti anda akan lihat di contoh pertama yang sangat mendasar berikut ini:

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

Hal lain yang barangkali telah anda perhatikan adalah bahwa Label secara default, memiliki sedikit ruang antara, yang memungkinkan teks ditampilkan (render) beberapa pixel dari pojok atas kiri. Ini tidaklah demikian pada TextBlock kontrol, yang mengharuskan anda menentukannya secara manual.

Dalam kasus sederhana seperti ini, dimana kontennya hanyalah sebuah teks (string), Label sebenarnya memasukkan TextBlock kedalam dirinya dan menampilkan teks anda didalam TextBlock tsb.

The Label control vs. the TextBlock control

Jika demikian, apakah kegunaan Label? Baiklah, memang ada beberapa perbedaan penting antara Label dan TextBlock. TextBlock hanya memungkinkan anda menampilkan sebuah teks (string), sementara Label juga memungkinkan anda:

  • Menentukan sebuah batas
  • Menampilkan (render) kontrol-kontrol yang lain, misalnya gambar
  • Menggunakan konten yang berasal dari Template melalui property ContentTemplate
  • Menggunakan kunci-kunci akses untuk memberikan fokus kepada kontrol-kontrol yang berhubungan

Butir terakhir merupakan satu dari alasan-alasan utama untuk menggunakan Label kontrol daripada TextBlock kontrol. Bilamana anda hanya ingin menampilkan teks yang sederhana, sebaiknya anda menggunakan TextBlock kontrol, karena ia lebih ringan dan memiliki prestasi yang lebih baik daripada Label dalam banyak hal.

Label and Access keys (mnemonics)

Dalam Windows dan sistem operasi (operating system) yang lain, adalah sebuah praktek umum jika anda dapat mengakses kontrol-kontrol didalam sebuah kotak dialog dengan menekan tombol keyboard [Alt] disertai dengan menekan sebuah karakter yang berhubungan dengan kontrol yang ingin anda akses. Karakter yang harus ditekan akan terlihat menonjol (highlighted) ketika anda menekan tombol [Alt]. TextBlock kontrol tidak mendukung fungsionalitas ini, sebaliknya dengan Label, sehingga untuk label-label yang berfungsi sebagai kontrol, Label kontrol adalah pilihan yang paling baik. Marilah kita melihat sebuah contohnya ketika beraksi.

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

Tangkapan layar (screenshot) diatas menunjukkan kotak dialog kita ketika tombol Alt ditekan. Cobalah jalankan programnya, tekan tombol [Alt] dilanjutkan dengan menekan tombol N dan M. Anda akan melihat bagaimana fokus berpindah-pindah diantara kedua textbox.

Jadi, ada beberapa konsep baru disini. Pertama-tama, kita mendefinisikan kunci akses dengan meletakkan garis bawah (_) sebelum sebuah karakter. Tidak perlu karakter yang pertama, ia dapat saja diletakkan sebelum karakter apa saja dalam konten label anda. Praktek yang umum adalah menggunakan karakter yang pertama yang belum digunakan untuk kunci akes ke kontrol yang lain.

Kita menggunakan properti Target untuk menghubungkan Label dengan kontrol yang diinginkan. Kita menggunakan binding WPF yang standard untuk mencapai ini, yaitu menggunakan properti ElementName, yang kesemuanya akan diuraikan kemudian didalam tutorial ini. Binding didasarkan pada nama kontrol, sehingga kalau anda mengganti nama kontrol anda juga harus ingat untuk merubah binding.

Using controls as Label content

Seperti telah disebutkan, Label kontrol memungkinkan anda untuk mencakupi kontrol-kontrol yang lain, sementara tetap dapat memanfaatkan keuntungan-keuntungan yang ada lainnya. Marilah kita membuat sebuah contoh label-label dimana didalamnya ada sebuah gambar dan sebuah teks, disamping juga memiliki kunci akses untuk masing-masing label.

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

Ini adalah versi yang diperpanjang dari contoh sebelumnya - disamping hanya sebuah teks yang sederhana, label kita sekarang memiliki sebuah gambar dan sebuah teks (didalam AccessText kontrol, yang memungkinkan kita untuk tetap dapat menggunakan kunci akses untuk label). Kedua kontrol berada didalam StackPanel horizontal, karena Label, sama seperti turunan ContentControl lainnya, hanya dapat mencakupi satu anak kontrol (child control) saja secara langsung.

Image kontrol, yang akan dijelaskan kemudian didalam tutorial ini, menggunakan gambar jarak jauh (remote) - ini HANYA untuk tujuan demonstrasi saja dan TIDAK baik diterapkan dalam aplikasi yang sebenarnya.

Summary

Dalam banyak situasi, Label kontrol mengerjakan persis seperti apa yang tertera pada namanya: Ia beraksi sebagai sebuah label teks untuk kontrol yang lain. Inilah maksud utama Label kontrol. Untuk banyak kasus lainnya, anda mungkin sebaiknya menggunakan TextBlock kontrol atau salah satu dari kontainer teks (text containers) lainnya yang ada di WPF.


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!