De acordo com o Windows Applications Development with Microsoft .NET 4 70-511 Training Kit
Qual é a diferença entre Labelcontrole e TextBlockcontrole, pois ambos são controles de conteúdo e apenas exibem texto?
De acordo com o Windows Applications Development with Microsoft .NET 4 70-511 Training Kit
Qual é a diferença entre Labelcontrole e TextBlockcontrole, pois ambos são controles de conteúdo e apenas exibem texto?
Respostas:
Embora TextBlockviva no espaço para nome System.Windows.Controls, não é um controle. Deriva diretamente de FrameworkElement. A etiqueta, por outro lado, deriva de ContentControl. Isso significa que Labelpode:
Templatepropriedade).Contentpropriedade).DataTemplateao seu conteúdo (através da ContentTemplatepropriedade).Faça o que mais a ContentControlpode fazer e a FrameworkElementnão pode.
Label o texto fica acinzentado quando desativadoLabel suporta chaves de acessoLabel é muito mais pesado que TextBlockAlgumas leituras mais interessantes abaixo
As etiquetas geralmente suportam saída de texto em linha única, enquanto o TextBlock é destinado à exibição de texto em várias linhas.
Por exemplo, no wpf, o TextBlock possui uma propriedade TextWrappingque permite a entrada de várias linhas ; A etiqueta não possui isso.
Labelé o ContentControlque significa que você pode definir qualquer coisa como conteúdo para ele. Absolutamente qualquer coisa, incluindo strings, números, datas, outros controles, imagens, formas, etc. TextBlockpode lidar apenas strings.
Embora TextBlock e Label sejam usados para exibir texto, eles são bem diferentes nas capas.
=> O rótulo herda do ContentControl , uma classe base que permite a exibição de praticamente qualquer interface do usuário imaginável.
=> TextBlock , por outro lado, herda diretamente do FrameworkElement , perdendo assim o comportamento comum a todos os elementos herdados do Control. A hierarquia superficial de herança do TextBlock torna o controle mais leve que o Label e mais adequado para cenários mais simples e não interativos.
PS: No entanto, se você deseja que as teclas de acesso funcionem ou deseja um design gráfico ou mais flexível, precisará usar o Label.
Provavelmente, o recurso mais irritante TextBlocké o comportamento implícito de pesquisa de estilo, cujo escopo é apenas o mais próximo possível DataTemplate. Este é um comportamento padrão para Controlelementos não 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>
Rende um resultado de:
Você pode ler mais sobre isso aqui .