我有一个TextBlock,其中包含要包装的一长行文本。我将TextBlock放在了一个ViewBox中,期望它的文本大小在仍换行时会发生变化,但是这似乎没有发生。 ViewBox只是调整TextBox的大小,以便所有文本都适合一行,从而使文本很小。
如何在仍然使用TextWrapping的同时使用ViewBox调整文本大小。
这是我的代码:
<Viewbox>
<TextBlock Text="The Option text can also dynamically grow/shrink to fit more content. More text to go here....................." TextWrapping="Wrap"/>
</Viewbox>
这是Windows 8存储应用程序的一部分,因此是WinRT Xaml。
只需在TextBlock
上设置宽度。
<Viewbox Width="500">
<TextBlock Width="100" TextWrapping="Wrap">This is the text that's long and on two lines.</TextBlock>
</Viewbox>
因此ViewBox
将放大/缩小其全部内容。如果您不通过在TextBlock
上设置宽度来限制其内容,则ViewBox
将为其提供无限的扩展空间。您还可以在Grid
内添加一个具有宽度和高度的根ViewBox
,并在其中放置元素,然后根据ViewBox
的宽度对整个批次进行缩放。在图像中,TextBlock
100的宽度被缩放为ViewBox
的宽度,即500。因此,要获得所需的包装,只需调整TextBlock
的宽度,直到看起来不错为止。] >
(显然,它应该说三行,但我不只是为此而重新上传)
<Button>
<Button.Content>
<Viewbox StretchDirection="DownOnly">
<TextBlock Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=Button}}" TextWrapping="Wrap" TextAlignment="Center" Text="{Binding }" />
</Viewbox>
</Button.Content>
</Button>
因此,文本块将获得Button按钮当前具有的宽度。如果按钮更改宽度,则会自动更新。 Textblock将根据给定的宽度进行换行,并且只有在需要时,视图框才会闪烁(假设应用StretchDirection =“ DownOnly”)。