WPF: перенос текста при применении ScaleTransform - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу применить ScaleTransform к TextBlock, пока 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. Как я могу это сделать?

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете попробовать 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>

P.S. Используйте ползунок, чтобы настроить масштабирование и увидеть, как масштабирование влияет на весь макет

Ссылки: MSDN

...