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>