Gemäß der Windows-Anwendungsentwicklung mit Microsoft .NET 4 70-511 Training Kit
Was ist der Unterschied zwischen dem Label
Steuerelement und dem TextBlock
Steuerelement, da beide Inhaltssteuerelemente sind und nur Text anzeigen?
Gemäß der Windows-Anwendungsentwicklung mit Microsoft .NET 4 70-511 Training Kit
Was ist der Unterschied zwischen dem Label
Steuerelement und dem TextBlock
Steuerelement, da beide Inhaltssteuerelemente sind und nur Text anzeigen?
Antworten:
Obwohl es sich TextBlock
im System.Windows.Controls-Namespace befindet, handelt es sich nicht um ein Steuerelement. Es leitet sich direkt von ab FrameworkElement
. Label hingegen leitet sich von ab ContentControl
. Dies bedeutet, dass Label
:
Template
Eigenschaft).Content
Eigenschaft).DataTemplate
auf seinen Inhalt an (über die ContentTemplate
Eigenschaft).Tun Sie, was auch immer Sie ContentControl
können, FrameworkElement
was Sie nicht können.
Label
Text ist ausgegraut, wenn deaktiviertLabel
unterstützt ZugriffsschlüsselLabel
ist viel schwerer als TextBlock
Einige weitere interessante Lektüren weiter unten
Beschriftungen unterstützen normalerweise die einzeilige Textausgabe, während der TextBlock für die mehrzeilige Textanzeige vorgesehen ist.
Zum Beispiel hat TextBlock in wpf eine Eigenschaft, TextWrapping
die eine mehrzeilige Eingabe ermöglicht. Label hat dies nicht.
Label
ist , ContentControl
was bedeutet , dass Sie etwas als Inhalt für sie einstellen können. Absolut alles, einschließlich Zeichenfolgen, Zahlen, Datumsangaben, andere Steuerelemente, Bilder, Formen usw., TextBlock
kann nur verarbeitet werden strings
.
Obwohl TextBlock und Label beide zum Anzeigen von Text verwendet werden, unterscheiden sie sich unter den Deckblättern erheblich.
=> Label erbt von ContentControl , einer Basisklasse, die die Anzeige nahezu aller vorstellbaren Benutzeroberflächen ermöglicht.
=> TextBlock hingegen erbt direkt von FrameworkElement und verpasst so das Verhalten, das allen von Control geerbten Elementen gemeinsam ist. Durch die flache Vererbungshierarchie von TextBlock ist das Steuerelement leichter als Label und besser für einfachere, nicht interaktive Szenarien geeignet.
PS: Wenn Sie jedoch möchten, dass Zugriffstasten funktionieren oder ein flexibleres oder grafischeres Design wünschen, müssen Sie Label verwenden.
Das wahrscheinlich nervigste Merkmal TextBlock
ist das implizite Verhalten bei der Suche nach Stilen, das nur auf den nächsten Bereich beschränkt ist DataTemplate
. Dies ist ein Standardverhalten für Nicht- Control
XAML-Elemente.
<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>
Ergibt ein Ergebnis von:
Sie können mehr darüber lesen Sie hier .