WPF 텍스트 블록에서 내 텍스트를 여러 줄로 표시하려면 어떻게 해야 합니까?
wpf 창에는 두 개의 뷰포트가 있는 스택 패널이 있습니다. 각 뷰포트에는 텍스트 블록이 있습니다.
<Grid>
<StackPanel VerticalAlignment="Center" Orientation="Vertical" >
<Viewbox Margin="100,0,100,0">
<TextBlock x:Name="headerText"
Text="Lorem ipsum dolor"
Foreground="Black"/>
</Viewbox>
<Viewbox Margin="150,0,150,0">
<TextBlock x:Name="subHeaderText"
Text="Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, "
TextWrapping="Wrap"
Foreground="Gray" />
</Viewbox>
</StackPanel>
</Grid>
제가 이루고 싶은 것은 상단 텍스트 블록이 더 큰 텍스트가 있는 제목이라는 것입니다.두 번째 텍스트 블록은 작은 텍스트가 있는 하위 제목입니다.제목 또는 부제목에 대한 텍스트 수가 아무리 많더라도 글꼴은 동적으로 더 작아지거나 커져야 합니다.저의 문제는 부제목을 고정 폭으로 했으면 하는 것입니다.즉, 글꼴은 텍스트 양에 따라 제목의 백분율(70%)이 되어야 하고 여러 줄로 묶어야 합니다.제가 지금까지 가지고 있는 코드를 동봉합니다.저는 그 부제가 있는 무언가를 놓치고 있습니다. 무엇인지 알 수 없습니다.건배.
편집 기본적으로 내가 원하는 것은 하위 헤더가 텍스트를 감싸서 글꼴이 제목의 70%로 아래로 확장할 수 있도록 하는 것입니다. 글꼴이 아무리 크더라도 말입니다.
스택 패널을 중첩하면 텍스트 상자가 올바르게 감깁니다.
<Viewbox Margin="120,0,120,0">
<StackPanel Orientation="Vertical" Width="400">
<TextBlock x:Name="subHeaderText"
FontSize="20"
TextWrapping="Wrap"
Foreground="Black"
Text="Lorem ipsum dolor, lorem isum dolor,Lorem ipsum dolor sit amet, lorem ipsum dolor sit amet " />
</StackPanel>
</Viewbox>
속성 사용TextWrapping
의TextBlock
요소:
<TextBlock Text="StackOverflow Forum"
Width="100"
TextWrapping="WrapWithOverflow"/>
줄 바꿈 사용:
<TextBlock>
<Run Text="Line1"/>
<LineBreak/>
<Run Text="Line2" FontStyle="Italic" FontSize="9"/>
<LineBreak/>
<Run Text="Line3"/>
</TextBlock>
다음을 참조하십시오. https://social.msdn.microsoft.com/Forums/vstudio/en-US/51a3ffe4-ec82-404a-9a99-6672f2a6842b/how-to-give-multiline-in-textblock?forum=wpf
감사해요.
RDV
이것은 부분적으로 진행됩니다.실제 글꼴 크기 속성은 없지만 실제 높이가 있으며 글꼴 크기와 관련이 있습니다.현재 이 크기는 원래 렌더의 크기에만 해당합니다.Converter를 크기 조정 이벤트로 등록하는 방법을 알 수 없습니다.실제로 글꼴 크기를 크기 조정 이벤트로 등록해야 할 수도 있습니다.불완전한 답변 때문에 저를 깎아내리지 마세요.코드 샘플을 코멘트에 넣지 못했습니다.
<Window.Resources>
<local:WidthConverter x:Key="widthConverter"/>
</Window.Resources>
<Grid>
<Grid>
<StackPanel VerticalAlignment="Center" Orientation="Vertical" >
<Viewbox Margin="100,0,100,0">
<TextBlock x:Name="headerText" Text="Lorem ipsum dolor" Foreground="Black"/>
</Viewbox>
<TextBlock Margin="150,0,150,0" FontSize="{Binding ElementName=headerText, Path=ActualHeight, Converter={StaticResource widthConverter}}" x:Name="subHeaderText" Text="Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, " TextWrapping="Wrap" Foreground="Gray" />
</StackPanel>
</Grid>
</Grid>
변환기
[ValueConversion(typeof(double), typeof(double))]
public class WidthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double width = (double)value*.7;
return width; // columnsCount;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
헤더 글꼴을 나머지 글꼴보다 조금 더 크게 하려면 스케일 변환을 사용할 수 있습니다.따라서 실제 글꼴 크기에 의존하지 않습니다.
<TextBlock x:Name="headerText" Text="Lorem ipsum dolor">
<TextBlock.LayoutTransform>
<ScaleTransform ScaleX="1.1" ScaleY="1.1" />
</TextBlock.LayoutTransform>
</TextBlock>
위의 모든 답변이 제 요구를 충족시키지 못했으며 여기 있는 대부분의 사람들도 비슷한 문제를 가지고 있을 것이라고 확신합니다.제가 원했던 것은 줄 피드를 포함하는 문자열 속성을 텍스트 블록에 바인딩하고 단일 줄이 아닌 여러 줄로 표시하는 것이었습니다.WPF는 이것에 대한 쉬운 해결책이 없는 것 같아서 저는 저만의 작은 해결책을 찾았습니다.편집 가능성을 비활성화하고 텍스트 블록처럼 만드는 사용자 지정 스타일의 텍스트 상자를 사용합니다.사람들이 이제 당신의 텍스트 블록에서 텍스트를 복사할 수 있다는 추가적인 이점과 함께 매력적으로 작동하며, 적어도 내 모든 애플리케이션에서 승리입니다!
<Style TargetType="{x:Type TextBox}" x:Key="TextBlock">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="VerticalContentAlignment" Value="Left"/>
</Style>
다음과 같이 사용할 수 있습니다.
<TextBox Style="{StaticResource TextBlock}" Text="{Binding UpdateChanglog}"/>
다음과 같이 표시됩니다.
텍스트 범위:
•Update is from server!
•The camera now actually works
•Images are sharp
•Network is great
•Everybody happy
언급URL : https://stackoverflow.com/questions/7406973/how-do-i-make-a-wpf-textblock-show-my-text-on-multiple-lines
'programing' 카테고리의 다른 글
IIS/ASP에 대한 모든 사용자 계정은 무엇입니까?NET과 그것들은 어떻게 다릅니까? (0) | 2023.04.26 |
---|---|
FTP 지원을 Eclipse에 추가하려면 어떻게 해야 합니까? (0) | 2023.04.26 |
Eclipse에서 AVD 또는 SDK 관리자를 찾을 수 없습니다. (0) | 2023.04.26 |
문자열에서 처음 10자를 제거하는 방법은 무엇입니까? (0) | 2023.04.26 |
zure 웹 사이트의 파일 시스템에 쓸 수 있습니까? (0) | 2023.04.26 |