jer*_*han 235 .net c# wpf label word-wrap
我有一个TextBox和一个标签.单击按钮后,我执行以下代码:
label1.Content = textbox1.Text;
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何启用标签的文本换行?可能有太多文本要显示在一行上,如果是这种情况,我希望它自动换行到多行.
Cod*_*ray 362
该Label控件不直接支持WPF中的文本换行.你应该用一个TextBlock代替.(当然,你可以把TextBlock 里面一的Label控制,如果你想.)
示例代码:
<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>
Run Code Online (Sandbox Code Playgroud)
Pau*_*ulJ 104
通常你不能代替Label了TextBlock,只要你想使用的Target属性(设置聚焦到目标使用键盘如ALT + C在下面的示例代码时控制),因为这是一个所有Label真正提供过TextBlock.
但是,a Label使用a TextBlock来呈现文本(如果字符串放在Content属性中,通常是这样); 因此,您可以在TextBlock内部添加样式,Label以便:
<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" />
Run Code Online (Sandbox Code Playgroud)
这样你就可以保持a的功能,Label同时也可以包装文本.
小智 87
我使用了以下代码.
<Label>
<Label.Content>
<AccessText TextWrapping="Wrap" Text="xxxxx"/>
</Label.Content>
</Label>
Run Code Online (Sandbox Code Playgroud)
Adr*_*ciu 32
您可以在标签内放置一个TextBlock:
<Label>
<TextBlock Text="Long Text . . . ." TextWrapping="Wrap" />
</Label>
Run Code Online (Sandbox Code Playgroud)
小智 13
要在标签控件中包装文本,请更改标签模板,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
Ree*_*sey 10
我建议使用TextBlock,而不是使用Label类.这允许您适当地设置TextWrapping.
你可以随时做:
label1.Content = new TextBlock() { Text = textBox1.Text, TextWrapping = TextWrapping.Wrap };
Run Code Online (Sandbox Code Playgroud)
但是,如果所有这个"标签"用于显示文本,请使用TextBlock替代.
我们需要放置某种可以包裹文本的控件,例如 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
197466 次 |
| 最近记录: |