WPF를 사용하여 레이블에서 텍스트를 랩핑하려면 어떻게 해야 합니까?
저는 라벨과 라벨을 가지고 있습니다.단추를 클릭한 후 다음 코드를 실행합니다.
label1.Content = textbox1.Text;
제 질문은 레이블의 텍스트 래핑을 활성화하려면 어떻게 해야 합니까?한 줄에 표시하기에는 텍스트가 너무 많을 수 있으며, 그렇다면 여러 줄로 자동으로 포장했으면 합니다.
그Label
컨트롤은 WPF의 텍스트 래핑을 직접 지원하지 않습니다.대신 를 사용해야 합니다. (물론, 당신은 그것을 배치할 수 있습니다.)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>
종종 당신은 a를 대체할 수 없습니다.Label
와 함께TextBlock
사용하고 싶은 대로Target
속성(아래 샘플 코드의 ALT+C와 같이 키보드를 사용할 때 표적 컨트롤에 초점을 설정함).Label
보다 더 많이 제공되는TextBlock
.
그러나, a.Label
를 사용합니다.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" />
이러한 방식으로 당신은 a의 기능을 유지할 수 있습니다.Label
텍스트를 감쌀 수도 있습니다.
저는 다음 코드를 사용했습니다.
<Label>
<Label.Content>
<AccessText TextWrapping="Wrap" Text="xxxxx"/>
</Label.Content>
</Label>
레이블 내부에 텍스트 블록을 넣을 수 있습니다.
<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>
레이블 클래스를 사용하는 대신 텍스트 블록을 사용하는 것이 좋습니다.이렇게 하면 텍스트 래핑을 적절하게 설정할 수 있습니다.
언제든지 할 수 있습니다.
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>
이것을 사용해 보세요.
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>
MySql 데이터베이스에서 데이터를 검색하는 데 사용했습니다.
AccessText a = new AccessText();
a.Text=reader[1].ToString(); // MySql reader
a.Width = 70;
a.TextWrapping = TextWrapping.WrapWithOverflow;
labels[i].Content = a;
언급URL : https://stackoverflow.com/questions/5013067/how-can-i-wrap-text-in-a-label-using-wpf
'programing' 카테고리의 다른 글
제공된 잠금이 잘못되었습니다.잠금이 만료되었거나 메시지가 대기열에서 이미 제거되었습니다. (0) | 2023.05.23 |
---|---|
VB.NET에서 Enter 키를 누르는 중 (0) | 2023.05.23 |
UPSERT 방법(MERGE, INSERT...)PostgreSQL에서 중복 업데이트 시)? (0) | 2023.05.23 |
NameError: 'reload' 이름이 정의되지 않았습니다. (0) | 2023.05.18 |
기본 컬렉션 및 데이터로 Mongo Docker 이미지를 만드는 방법은 무엇입니까? (0) | 2023.05.18 |