Вертикально повернутый текстовый блок занимает всю ширину, как если бы он был горизонтальным - PullRequest
1 голос
/ 20 декабря 2011

Я поместил элемент управления TextBlock в рамку, чтобы видеть, что занимает место:

enter image description here

Вот XAML:

<Border BorderBrush="Cyan" BorderThickness="3">
    <TextBlock Style="{StaticResource subtitle}" Text="{Binding Title}" >
        <TextBlock.RenderTransform>
            <RotateTransform Angle="90" />
        </TextBlock.RenderTransform>
    </TextBlock>
</Border>

Проблема в том, что это занимает гораздо больше места, чем мне нужно, и если я установлю статическую ширину, я получу это:

enter image description here

Есть предложения?

Ответы [ 2 ]

6 голосов
/ 20 декабря 2011
<Setter Property="LayoutTransform"> 
    <Setter.Value> 
        <RotateTransform Angle="90" /> 
    </Setter.Value> 
</Setter> 

Это произошло, потому что, как и в большинстве веб-приложений, существует ряд событий, которые запускают / запускают большую часть того, что мы привыкли видеть или иметь дело, происходит в событии рендеринга ... к тому времени страница ужетак сказать, я не уверен на 100%, но я действительно думаю, что LayoutTransform происходит во время предварительного рендеринга

0 голосов
/ 23 ноября 2014

У меня была такая же проблема при создании текстовых блоков во время выполнения и их вращении.Я решил это просто, установив

tb.Margin = .......
tb.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Left;
tb.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top;
RotateTransform rt = new RotateTransform();
rt.Angle = -40;
tb.RenderTransform = rt;

. Кажется, что вы не устанавливаете их, преобразование выполняет свои вычисления по центрированному тексту и добавляет ширину, чтобы расположить его там, где вы хотели ...

...