WPF:应用ScaleTransform时换行文本

问题描述 投票:1回答:1

我想在TextBlock上应用ScaleTransform而TextWrapping = Wrap。

这是我的xaml:

<Grid>
    <Border ClipToBounds="True"  Background="Beige" Width="200" Height="200">
        <TextBlock  TextWrapping="Wrap" FontSize="20" Text="AB CD EF GH IG KL MN OP QR ST UV WX YZ">
            <TextBlock.RenderTransform>
                <ScaleTransform ScaleX="1"  />
            </TextBlock.RenderTransform>
        </TextBlock>
    </Border>
</Grid>

它在ScaleX = 1时有效,但在ScaleX> 1时不起作用。

请看这些图片:

without ScaleX

with ScaleX

我需要ScaleTransform和TextWrapping,我该怎么做?

c# wpf transformation textwrapping
1个回答
2
投票

你可以试试LayoutTransform而不是RenderTransform。使用以下代码段来玩:

<Grid>
    <DockPanel LastChildFill="True">
        <Slider x:Name="Scale" DockPanel.Dock="Bottom" Minimum="1" Maximum="20"/>
        <Border ClipToBounds="True" Background="Beige" Width="200" Height="200">
            <TextBlock TextWrapping="Wrap" FontSize="20" Text="AB CD EF GH IG KL MN OP QR ST UV WX YZ">
                <TextBlock.LayoutTransform>
                    <ScaleTransform ScaleX="{Binding ElementName=Scale, Path=Value}" ScaleY="{Binding ElementName=Scale, Path=Value}"/>
                </TextBlock.LayoutTransform>
            </TextBlock>
        </Border>
    </DockPanel>
</Grid>

附:使用滑块调整缩放比例并查看缩放对整个布局的影响

链接:MSDN

© www.soinside.com 2019 - 2024. All rights reserved.