如何在两个相同大小的Viewbox中制作文本?

时间:2014-11-11 08:47:55

标签: wpf

在WPF中,我使用Viewbox使一些文本自动调整大小。问题是文本最终会出现不同的字体,因为较短的文字会显得更大。

<Grid>
    <!--grid definitions-->
    <TextBlock Text="short text" Grid.Row="1" Grid.Column="0" x:Name="tb2" FontSize="{Binding ElementName=tb3, Path=FontSize}"/>   <--HERE
    <Viewbox Grid.Column="0" Grid.Row="2">
        <TextBlock Text="looooong text" x:Name="tb3" Style="{StaticResource txtNormal}"/>
    </Viewbox>
</Grid>

在“HERE”标记的行中,我尝试将一个TextBlcok的字体大小绑定到另一个,但它不起作用。我也尝试过使用StretchDirection="DownOnly";虽然这确实使它们的尺寸相同,但也小得多。我还看到了this post并尝试将Viewbox放在Grid之外,但这会混淆ColumnDefinition中定义的列宽比。

那么如何使不同Viewbox的文本大小相同?谢谢!

1 个答案:

答案 0 :(得分:5)

将另一个TextBlock(短文本)放在ViewBox中,并将ViewBox MaxHeight绑定到另一个ViewBox的ActualHeight(长文本)。

<Viewbox MaxHeight="{Binding ElementName=vb, Path=ActualHeight}">
    <TextBlock Text="short text" Grid.Row="0" Grid.Column="0" x:Name="tb2" />
</Viewbox>
<Viewbox Name="vb" Grid.Column="0" Grid.Row="1">
    <TextBlock Text="looooooooooong text" x:Name="tb3"/>
 </Viewbox>