Menurut Pengembangan Aplikasi Windows dengan Microsoft .NET 4 70-511 Training Kit
Apa perbedaan antara Labelkontrol dan TextBlockkontrol karena keduanya adalah kontrol konten dan hanya menampilkan teks?
Menurut Pengembangan Aplikasi Windows dengan Microsoft .NET 4 70-511 Training Kit
Apa perbedaan antara Labelkontrol dan TextBlockkontrol karena keduanya adalah kontrol konten dan hanya menampilkan teks?
Jawaban:
Meskipun TextBlocktinggal di namespace System.Windows.Controls, itu bukan kontrol. Ini berasal langsung dari FrameworkElement. Label, di sisi lain, berasal dari ContentControl. Ini berarti bahwa Labeldapat:
Templateproperti).Contentproperti).DataTemplateke kontennya (melalui ContentTemplateproperti).Lakukan apa pun yang ContentControlbisa dilakukan yang FrameworkElementtidak bisa.
Label teks berwarna abu-abu saat dinonaktifkanLabel mendukung kunci aksesLabel jauh lebih berat daripada TextBlockBeberapa 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 TextWrappingyang memungkinkan input multiline; Label tidak memiliki ini.
Labeladalah ContentControlyang berarti bahwa Anda dapat mengatur apa pun sebagai konten untuk itu. Apa pun yang termasuk string, angka, tanggal, kontrol lain, gambar, bentuk, dll. Hanya TextBlockdapat 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 TextBlockadalah perilaku pencarian gaya implisit, yang dibatasi hanya untuk yang terdekat DataTemplate. Ini adalah perilaku default untuk Controlelemen 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 .