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 Labeldenetim ve TextBlockdenetim 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 Labeldenetim ve TextBlockdenetim arasındaki fark nedir ?
Yanıtlar:
TextBlockSystem.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 ContentControlyapamayacağı başka ne varsa FrameworkElementyapamazsın.
Label devre dışı bırakıldığında metin grileşiyorLabel erişim anahtarlarını desteklerLabel -den çok daha ağır TextBlockAş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.
Labelbu, ContentControlherhangi 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 TextBlockyalnı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, Controlxaml 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 .