visual studio salto net linea hacer como cambio wpf xaml

studio - ¿Cómo puedo hacer que un WPF TextBlock muestre mi texto en múltiples líneas?



hacer salto de linea en textbox (4)

tengo una ventana wpf donde tengo un panel de distribución con dos ventanas de visualización, cada ventana gráfica con un bloque de texto.

<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>

Lo que me gustaría lograr es que el bloque de texto superior sea el encabezado con un texto más grande. El segundo bloque de texto es el subtítulo con un texto más pequeño. No importa cuánto texto haya para el encabezado o el subtítulo, la fuente debe ser más pequeña / más grande. Mi problema es que me gustaría que el subtítulo sea ancho fijo. Esto significa que, la fuente debe ser un porcentaje (70%) del encabezado y ajustar a varias líneas, dependiendo de la cantidad de texto que tengo. Encerré el código que tengo hasta ahora ... me falta algo con ese subtítulo, no sé qué. Aclamaciones

Editar Básicamente, lo que quiero lograr es que el encabezado secundario envuelva el texto para que pueda expandirse hacia abajo con la fuente siendo un 70% del encabezado, sin importar qué tan grande sea esa fuente.


Anidar un panel de pila hará que el cuadro de texto se ajuste correctamente:

<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>


Esto se lleva a cabo allí. No hay propiedad ActualFontSize, pero hay una Altura real y que se relacionaría con FontSize. En este momento, este es el único tamaño para el render original. No pude entender cómo registrar el convertidor como un evento de cambio de tamaño. En realidad, tal vez necesite registrar FontSize como un evento de cambio de tamaño. Por favor, no me marquen para una respuesta incompleta. No pude poner la muestra de código en un comentario.

<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>

Convertidor

[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(); } }


Si solo quieres que tu fuente de encabezado sea un poco más grande que el resto, puedes usar ScaleTransform. para que no dependas de la fuente real.

<TextBlock x:Name="headerText" Text="Lorem ipsum dolor"> <TextBlock.LayoutTransform> <ScaleTransform ScaleX="1.1" ScaleY="1.1" /> </TextBlock.LayoutTransform> </TextBlock>


Utilice la propiedad TextWrapping del elemento TextBlock :

<TextBlock Text=" Forum" Width="100" TextWrapping="WrapWithOverflow"/>