답변:
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>
TextBlock
에 TextBox
? - TextBlock
의 읽기 전용 된 WPF는 "아발론"라는 코드는 이후.
Padding="5"
다른 Label
컨트롤 의 패딩과 일치 하도록 설정해야했습니다 . 아래 Rajesh의 답변을 참조하십시오.
종종 당신은을 대체 할 수 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>
레이블 컨트롤에서 텍스트를 줄 바꿈하려면 다음과 같이 레이블의 템플릿을 변경하십시오.
<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 label1 = new Label() { Content = new TextBlock() { Text = caption, TextWrapping = TextWrapping.Wrap }, FontWeight = FontWeights.Normal };
IsReadOnly="true"
라벨을 모방하도록 설정 :)