2011-12-20 93 views
1

我包裹在一個邊界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

有什麼建議嗎?

+3

是否有可能分配給Setter屬性的LayoutTransform,並從那裏增加或減少邊界..? – MethodMan 2011-12-20 18:22:02

回答

6
<Setter Property="LayoutTransform"> 
    <Setter.Value> 
     <RotateTransform Angle="90" /> 
    </Setter.Value> 
</Setter> 

這發梗,因爲像大多數Web應用程序庫有一系列得到觸發/解僱大部分我們都採用看到或者在渲染事件發生處理..屆時頁面有活動已經提供了可以這麼說,我不是100%確定,但我真的認爲LayoutTransform發生在預渲染

+1

啊哈!我不得不使用LayoutTransform而不是RenderTransform。古拉爵! – 2011-12-20 18:23:53

+0

男人我很高興我有一個很好的記憶..很高興我能快速幫助你..投票UP..LOL – MethodMan 2011-12-20 18:24:49

+2

@SergioTapia'LayoutTransform'工作的原因是因爲它在TextBlock被渲染之前被應用。在渲染TextBlock之後應用「RenderTransforms」,並在UI中阻止了它的空間。 DJ,如果你想添加一個這樣的解釋到你的答案,我會投它:) – Rachel 2011-12-20 18:28:48

0

我在運行時創建文本塊並旋轉它們時有同樣的問題。 我解決它只是通過設置

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; 

它好像你不設置這些參數,變換是做在居中文本的Calcs(計算),增加寬度,你想將它定位...