Menurut Pengembangan Aplikasi Windows dengan Microsoft .NET 4 70-511 Training Kit
Apa perbedaan antara Label
kontrol dan TextBlock
kontrol karena keduanya adalah kontrol konten dan hanya menampilkan teks?
Menurut Pengembangan Aplikasi Windows dengan Microsoft .NET 4 70-511 Training Kit
Apa perbedaan antara Label
kontrol dan TextBlock
kontrol karena keduanya adalah kontrol konten dan hanya menampilkan teks?
Jawaban:
Meskipun TextBlock
tinggal di namespace System.Windows.Controls, itu bukan kontrol. Ini berasal langsung dari FrameworkElement
. Label, di sisi lain, berasal dari ContentControl
. Ini berarti bahwa Label
dapat:
Template
properti).Content
properti).DataTemplate
ke kontennya (melalui ContentTemplate
properti).Lakukan apa pun yang ContentControl
bisa dilakukan yang FrameworkElement
tidak bisa.
Label
teks berwarna abu-abu saat dinonaktifkanLabel
mendukung kunci aksesLabel
jauh lebih berat daripada TextBlock
Beberapa bacaan lebih menarik di bawah ini
Label biasanya mendukung output teks baris tunggal sementara TextBlock dimaksudkan untuk tampilan teks multiline.
Misalnya di wpf TextBlock memiliki properti TextWrapping
yang memungkinkan input multiline; Label tidak memiliki ini.
Label
adalah ContentControl
yang berarti bahwa Anda dapat mengatur apa pun sebagai konten untuk itu. Apa pun yang termasuk string, angka, tanggal, kontrol lain, gambar, bentuk, dll. Hanya TextBlock
dapat ditangani strings
.
Meskipun TextBlock dan Label keduanya digunakan untuk menampilkan teks, mereka sangat berbeda di bawah sampulnya.
=> Label mewarisi dari ContentControl , kelas dasar yang memungkinkan tampilan hampir semua UI yang bisa dibayangkan.
=> TextBlock , di sisi lain, mewarisi langsung dari FrameworkElement , sehingga kehilangan perilaku yang umum untuk semua elemen yang mewarisi dari Control. Hirarki pewarisan yang dangkal dari TextBlock membuat kontrol lebih ringan daripada Label dan lebih cocok untuk skenario yang lebih sederhana dan tidak interaktif.
NB: Namun, jika Anda ingin kunci akses berfungsi atau ingin desain yang lebih fleksibel atau grafis, Anda harus menggunakan Label.
Mungkin fitur yang paling menjengkelkan TextBlock
adalah perilaku pencarian gaya implisit, yang dibatasi hanya untuk yang terdekat DataTemplate
. Ini adalah perilaku default untuk Control
elemen non xaml.
<StackPanel Orientation="Vertical">
<StackPanel.Resources>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"/>
</Style>
<Style TargetType="Label">
<Setter Property="Foreground" Value="Red"/>
</Style>
</StackPanel.Resources>
<ContentControl Content="Test">
<ContentControl.ContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
<ContentControl Content="Test">
<ContentControl.ContentTemplate>
<DataTemplate>
<Label Content="{Binding}"/>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</StackPanel>
Menghasilkan hasil dari:
Anda dapat membaca lebih lanjut di sini .