Secondo lo sviluppo di applicazioni Windows con Microsoft .NET 4 70-511 Training Kit
Qual è la differenza tra Label
controllo e TextBlock
controllo poiché entrambi sono controlli del contenuto e visualizzano solo testo?
Secondo lo sviluppo di applicazioni Windows con Microsoft .NET 4 70-511 Training Kit
Qual è la differenza tra Label
controllo e TextBlock
controllo poiché entrambi sono controlli del contenuto e visualizzano solo testo?
Risposte:
Anche se TextBlock
vive nello spazio dei nomi System.Windows.Controls, non è un controllo. Deriva direttamente da FrameworkElement
. L'etichetta, d'altra parte, deriva da ContentControl
. Ciò significa che Label
può:
Template
proprietà).Content
proprietà).DataTemplate
al suo contenuto (tramite la ContentTemplate
proprietà).Fai qualunque altra ContentControl
cosa che puoi fare che FrameworkElement
non puoi.
Label
il testo è disattivato quando disabilitatoLabel
supporta le chiavi di accessoLabel
è molto più pesante di TextBlock
Di seguito alcune letture più interessanti
Le etichette in genere supportano l'output di testo a riga singola mentre TextBlock è progettato per la visualizzazione di testo su più righe.
Ad esempio in wpf TextBlock ha una proprietà TextWrapping
che abilita l'input multilinea; L'etichetta non ha questo.
Label
è il ContentControl
che significa che puoi impostare qualsiasi cosa come contenuto per esso. Assolutamente tutto ciò che include stringhe, numeri, date, altri controlli, immagini, forme, ecc. TextBlock
Può essere gestito solo strings
.
Sebbene sia TextBlock sia Label siano usati per visualizzare il testo, sono abbastanza diversi sotto le copertine.
=> L' etichetta eredita da ContentControl , una classe di base che consente la visualizzazione di quasi tutte le UI immaginabili.
=> TextBlock , d'altra parte, eredita direttamente da FrameworkElement , perdendo così il comportamento comune a tutti gli elementi che ereditano da Control. La gerarchia di ereditarietà superficiale di TextBlock rende il controllo più leggero rispetto a Label e adatto a scenari più semplici e non interattivi.
PS: Tuttavia, se vuoi che le chiavi di accesso funzionino o desideri un design più flessibile o grafico, dovrai utilizzare Label.
Probabilmente la caratteristica più fastidiosa TextBlock
è il comportamento di ricerca dello stile implicito, che è mirato solo al più vicino DataTemplate
. Questo è un comportamento predefinito per Control
elementi 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>
Produce un risultato di:
Puoi leggere di più qui .