Secondo lo sviluppo di applicazioni Windows con Microsoft .NET 4 70-511 Training Kit
Qual è la differenza tra Labelcontrollo e TextBlockcontrollo 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 Labelcontrollo e TextBlockcontrollo poiché entrambi sono controlli del contenuto e visualizzano solo testo?
Risposte:
Anche se TextBlockvive 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 Labelpuò:
Templateproprietà).Contentproprietà).DataTemplateal suo contenuto (tramite la ContentTemplateproprietà).Fai qualunque altra ContentControlcosa che puoi fare che FrameworkElementnon puoi.
Label il testo è disattivato quando disabilitatoLabel supporta le chiavi di accessoLabel è molto più pesante di TextBlockDi 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à TextWrappingche abilita l'input multilinea; L'etichetta non ha questo.
Labelè il ContentControlche significa che puoi impostare qualsiasi cosa come contenuto per esso. Assolutamente tutto ciò che include stringhe, numeri, date, altri controlli, immagini, forme, ecc. TextBlockPuò 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 Controlelementi 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 .