나는이 TextBox
와 레이블. 버튼을 클릭 한 후 다음 코드를 실행합니다.
label1.Content = textbox1.Text;
내 질문은 레이블의 텍스트 줄 바꿈을 어떻게 활성화합니까? 한 줄에 표시 할 텍스트가 너무 많을 경우 여러 줄로 자동 줄 바꿈하고 싶습니다.
답변
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>
답변
종종 당신은을 대체 할 수 Label
로모그래퍼 : TextBlock
당신이 원하는대로 사용할 수있는 Target
(세트가에 초점 재산 대상으로 그 모든이의로, 아래의 샘플 코드에서 키보드 예를 들어, ALT + C를 사용하는 경우 제어) Label
정말 이상 제공 TextBlock
.
그러나 a Label
는 TextBlock
텍스트를 렌더링 하기 위해 a 를 사용합니다 (문자열이 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" />
이렇게 Label
하면 텍스트를 줄 바꿈하면서 기능을 유지할 수 있습니다.
답변
다음 코드를 사용했습니다.
<Label>
<Label.Content>
<AccessText TextWrapping="Wrap" Text="xxxxx"/>
</Label.Content>
</Label>
답변
레이블 안에 TextBlock을 넣을 수 있습니다.
<Label>
<TextBlock Text="Long Text . . . ." TextWrapping="Wrap" />
</Label>
답변
레이블 컨트롤에서 텍스트를 줄 바꿈하려면 다음과 같이 레이블의 템플릿을 변경하십시오.
<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>
답변
Label 클래스를 사용하는 대신 TextBlock을 사용하는 것이 좋습니다 . 이를 통해 TextWrapping을 적절하게 설정할 수 있습니다 .
당신은 항상 할 수 있습니다 :
label1.Content = new TextBlock() { Text = textBox1.Text, TextWrapping = TextWrapping.Wrap };
그러나이 “라벨”이 모두 텍스트를 표시하는 것이라면 TextBlock
대신 사용하십시오 .
답변
우리는 텍스트 블록 / 텍스트 상자와 같은 텍스트를 줄 바꿈 할 수있는 일종의 컨트롤을 넣어야합니다.
<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>