Définissez l'exposant et l'indice dans le texte formaté dans wpf
Comment puis-je définir un texte en indice/exposant en texte formatté dans wpf
8 réponses
Vous utilisez la Typographie.Variantes:
<TextBlock>
<Run>Normal Text</Run>
<Run Typography.Variants="Superscript">Superscript Text</Run>
<Run Typography.Variants="Subscript">Subscript Text</Run>
</TextBlock>
Vous pouvez utiliser quelque chose comme <TextBlock>5x<Run BaselineAlignment="Superscript">4</Run> + 4</TextBlock>
.
cependant, autant que je sache, vous devrez réduire la taille de la police vous-même.
j'ai utilisé une transformation de mise en page, parce que Typography.Variants
souvent ne fonctionne pas:
<TextBlock Text="MyAmazingProduct"/>
<TextBlock Text="TM">
<TextBlock.LayoutTransform>
<!-- Typography.Variants="Superscript" didn't work -->
<TransformGroup>
<ScaleTransform ScaleX=".75" ScaleY=".75"/>
<TranslateTransform Y="-5"/>
</TransformGroup>
</TextBlock.LayoutTransform>
</TextBlock>
<TextBlock Text="{Binding Path=Version, StringFormat={} v{0}}"/>
l'avantage d'utiliser un
Il est intéressant de noter que pour certains personnages (m 2, m 3, etc) un exposant n'est pas nécessaire, mais le caractère unicode peut être utilisé. Par exemple:
<Run Text=" m³" />
cela montrerait m 3.
Je ne sais pas si vous avez besoin de cela pour travailler avec FormattedText précisément, ou vous voulez dire dérivations de Inline, mais ce qui suit fonctionnera sur Inlines, même si la typographie.Variantes="Superscript" ne fonctionne pas.
TextRange selection = new TextRange(document.ContentStart, document.ContentEnd);
selection.ApplyPropertyValue(Inline.BaselineAlignmentProperty, BaselineAlignment.Superscript);
j'Espère que ça aide!
la Typographie.Variantes ne fonctionne que pour ouvrir les types de polices de caractères. Si vous n'aimez pas que vos superscripts/subscripts dépassent la hauteur du texte réel, vous pouvez utiliser quelque chose comme ceci:
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="10" Margin="0,5,0,0">1</TextBlock>
<TextBlock FontSize="30">H</TextBlock>
<TextBlock FontSize="10" Margin="0,20,0,0">2</TextBlock>
</StackPanel>
Paramètre pour exposant fonctionne très bien avec le code suivant:
<TextBlock Text="(cm" />
<TextBlock ><Span BaselineAlignment="Top" FontSize="8">2</Span></TextBlock>
<TextBlock Text=")" />
définir l'alignement de base pour un indice dans la balise Span n'a pas fonctionné pour moi. J'ai essayé le code suivant et ça a bien marché.
<TextBlock Text="H" />
<TextBlock Text="2" Margin="-2,0,-2,0" TextBlock.LineHeight="3" >
<TextBlock Text="O" />
C'est la seule chose qui a fonctionné pour moi. Il vous donne également plus de contrôle sur l'alignement et la taille de la police.
<TextBlock Grid.Row="17">
3 x 3<Run FontSize="6pt" BaselineAlignment="TextTop">2</Run>)
</TextBlock>