c# .net wpf label textwrapping

c# - ¿Cómo puedo envolver el texto en una etiqueta usando WPF?



.net label (10)

A menudo, no puede reemplazar una Label con un TextBlock ya que quiere usar la propiedad Target (que establece el enfoque en el control específico cuando usa el teclado, por ejemplo, ALT + C en el código de muestra a continuación), ya que eso es todo lo que realmente ofrece una Label sobre una TextBlock .

Sin embargo, una Label utiliza un TextBlock para representar texto (si se coloca una cadena en la propiedad Content , que normalmente es); por lo tanto, puede agregar un estilo para TextBlock dentro de la Label así:

<Label Content="_Content Text:" Target="{Binding ElementName=MyTargetControl}"> <Label.Resources> <Style TargetType="TextBlock"> <Setter Property="TextWrapping" Value="Wrap" /> </Style> </Label.Resources> </Label> <CheckBox x:Name = "MyTargetControl" />

De esta manera, puede mantener la funcionalidad de una Label y, al mismo tiempo, poder envolver el texto.

Tengo un TextBox y una etiqueta. Después de hacer clic en un botón, ejecuto el siguiente código:

label1.Content = textbox1.Text;

Mi pregunta es, ¿cómo habilito el ajuste de texto de la etiqueta? Puede haber demasiado texto para mostrar en una línea, y quiero que se ajuste automáticamente a varias líneas, si ese es el caso.


El control Label no admite directamente el ajuste de texto en WPF. Deberías usar un TextBlock lugar. (Por supuesto, puede colocar el TextBlock dentro de un control Label , si lo desea).

Código de muestra:

<TextBlock TextWrapping="WrapWithOverflow"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec adipiscing nulla quis libero egestas lobortis. Duis blandit imperdiet ornare. Nulla ac arcu ut purus placerat congue. Integer pretium fermentum gravida. </TextBlock>


En lugar de usar una clase de etiqueta, recomendaría usar un TextBlock . Esto le permite configurar el TextWrapping adecuadamente.

Siempre puedes hacer:

label1.Content = new TextBlock() { Text = textBox1.Text, TextWrapping = TextWrapping.Wrap };

Sin embargo, si toda esta "etiqueta" es para mostrar texto, use un TextBlock lugar.


Necesitamos poner algún tipo de control que pueda envolver texto como textblock / textbox

<Label Width="120" Height="100" > <TextBlock TextWrapping="Wrap"> this is a very long text inside a textblock and this needs to be on multiline. </TextBlock> </Label>


Para ajustar el texto en el control de etiqueta, cambie la plantilla de etiqueta de la siguiente manera:

<Style x:Key="ErrorBoxStyle" TargetType="{x:Type Label}"> <Setter Property="BorderBrush" Value="#FFF08A73"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Foreground" Value="Red"/> <Setter Property="Background" Value="#FFFFE3DF"/> <Setter Property="FontWeight" Value="Bold"/> <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" CornerRadius="5" HorizontalAlignment="Stretch"> <TextBlock TextWrapping="Wrap" Text="{TemplateBinding Content}"/> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>


Puedes poner un TextBlock dentro de la etiqueta:

<Label> <TextBlock Text="Long Text . . . ." TextWrapping="Wrap" /> </Label>


Use el siguiente código.

<Label> <Label.Content> <AccessText TextWrapping="Wrap" Text="xxxxx"/> </Label.Content> </Label>


Utilicé esto para recuperar datos de la base de datos MySql:

AccessText a = new AccessText(); a.Text=reader[1].ToString(); // MySql reader a.Width = 70; a.TextWrapping = TextWrapping.WrapWithOverflow; labels[i].Content = a;


intenta usar esto

lblresult.Content = lblresult.Content + "prime are :" + j + "/n";


<Label x:Name="datetimeofmsg" HorizontalAlignment="Left" Margin="4.286,55,0,0" VerticalAlignment="Top" Background="{x:Null}" FontWeight="Bold" Width="61.714" Height="20" Foreground="White"> <Label.Content> <AccessText TextWrapping="Wrap"/> </Label.Content> </Label>