How can I wrap text in a label using WPF?
The Label
control doesn't directly support text wrapping in WPF. You should use a TextBlock
instead. (Of course, you can place the TextBlock
inside of a Label
control, if you wish.)
Sample code:
<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>
Often you cannot replace a Label
with a TextBlock
as you want to the use the Target
property (which sets focus to the targeted control when using the keyboard e.g. ALT+C in the sample code below), as that's all a Label
really offers over a TextBlock
.
However, a Label
uses a TextBlock
to render text (if a string is placed in the Content
property, which it typically is); therefore, you can add a style for TextBlock
inside the Label
like so:
<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" />
This way you get to keep the functionality of a Label
whilst also being able to wrap the text.