Microsoft .NET 4 70-511 Eğitim Seti ile Windows Uygulamaları Geliştirme'ye göre
Her ikisi de içerik denetimi olduğu ve yalnızca metni görüntülediği için Label
denetim ve TextBlock
denetim arasındaki fark nedir ?
Microsoft .NET 4 70-511 Eğitim Seti ile Windows Uygulamaları Geliştirme'ye göre
Her ikisi de içerik denetimi olduğu ve yalnızca metni görüntülediği için Label
denetim ve TextBlock
denetim arasındaki fark nedir ?
Yanıtlar:
TextBlock
System.Windows.Controls ad alanında yaşıyor olsa da , bu bir kontrol değildir. Doğrudan kaynaklanıyor FrameworkElement
. Etiket ise bundan türemiştir ContentControl
. Bu, Label
şunları yapabileceği anlamına gelir :
Template
özellik aracılığıyla ).Content
özellik aracılığıyla ).DataTemplate
(aracılığıyla içeriğine ContentTemplate
özelliği).A'nın ContentControl
yapamayacağı başka ne varsa FrameworkElement
yapamazsın.
Label
devre dışı bırakıldığında metin grileşiyorLabel
erişim anahtarlarını desteklerLabel
-den çok daha ağır TextBlock
Aşağıda biraz daha ilginç okumalar
Etiketler genellikle tek satırlı metin çıktısını desteklerken, TextBlock çok satırlı metin görüntüleme için tasarlanmıştır.
Örneğin, wpf'de TextBlock, TextWrapping
çok satırlı girişi etkinleştiren bir özelliğe sahiptir; Etiket buna sahip değil.
Label
bu, ContentControl
herhangi bir şeyi içerik olarak ayarlayabileceğiniz anlamına gelir. Dizeler, sayılar, tarihler, diğer kontroller, resimler, şekiller vb . Dahil olmak üzere kesinlikle her şey TextBlock
yalnızca işleyebilir strings
.
TextBlock ve Label her ikisi de metni görüntülemek için kullanılsa da, kapakların altında oldukça farklıdırlar.
=> Etiket , akla gelebilecek hemen her kullanıcı arayüzünün görüntülenmesini sağlayan temel bir sınıf olan ContentControl'den miras alır .
=> Öte yandan TextBlock , doğrudan FrameworkElement'ten miras alır , dolayısıyla Control'den miras alan tüm öğeler için ortak olan davranışı kaçırır. TextBlock'un yüzeysel miras hiyerarşisi, denetimin Label'dan daha hafif olmasını ve daha basit, etkileşimsiz senaryolar için daha uygun olmasını sağlar.
Not: Bununla birlikte, çalışmak için erişim anahtarları istiyorsanız veya daha esnek veya grafiksel bir tasarım istiyorsanız, Etiket kullanmanız gerekir.
Muhtemelen en sinir bozucu özelliği TextBlock
, kapsamı yalnızca en yakın olana ayarlanan örtük stil arama davranışıdır DataTemplate
. Bu, Control
xaml olmayan öğeler için varsayılan bir davranıştır .
<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>
Şunların bir sonucunu verir:
Bu konuda daha fazla bilgi bulabilirsiniz burada .