Eventos

[WPF] Texblock versus Label

Si bien son elementos visuales muy similares (debido a que la mayoria de veces lo usan para lo mismo) estos en verdad difieren bastante. El Textblock aunque reside en el espacio de nombres System.Windows.Controls no hereda de ContentControl como sí lo hace el Label.

Si se nos ocurre explorar un poco más nos daremos cuenta que el Textblock no tiene la propiedad Template, por lo mismo que no hereda de Control, en cambio el Label si tiene:

            <Style TargetType="{x:Type Label}">
                <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
                <Setter Property="Background" Value="Transparent"/>
                <Setter Property="Padding" Value="5"/>
                <Setter Property="HorizontalContentAlignment" Value="Left"/>
                <Setter Property="VerticalContentAlignment" Value="Top"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Label}">
                            <Border BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
                                <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsEnabled" Value="False">
                                    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

Entonces luego de saber esto podemos concluir algunas cosas:


  • Usando Label podemos mostrar más información que solo cadenas.
  • Se puede personalizar la plantilla del Label.
  • Podemos usar TemplateBinding usando Label.
  • Label es un control mucho mas pesado que el TextBlock.
  • No debemos usar Label a menos que realmente necesitos las funcionalidades que nos da.

No hay comentarios.:

Publicar un comentario

Epicalsoft — Superheroic Software Development Blog Designed by Templateism.com Copyright © 2014

Con tecnología de Blogger.