2009-05-28 2 views
0

Я пытаюсь создать элемент, похожий на группу, в XAML (для приложения Silverlight 2), но с завихрением.Попытка повернуть текст для группового ящика

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

То, что я пытаюсь сделать, это разместить текст заголовка над левой боковой границей, повернув на 270 градусов и повернув вверху. Но мой мозг болит, пытаясь выяснить, что такое вращение.

Вот мой ControlTemplate для существующего Groupbox, который я хотел бы изменить:

<ControlTemplate TargetType="Controls1:GroupBox"> 
    <Grid Background="{TemplateBinding Background}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Border BorderThickness="{TemplateBinding BorderThickness}" Grid.Row="1" Grid.RowSpan="2" 
      BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="3"> 
     <Border.Clip> 
     <GeometryGroup FillRule="EvenOdd"> 
      <RectangleGeometry x:Name="FullRect" Rect="0,0,300,200"/> 
      <RectangleGeometry x:Name="HeaderRect" Rect="6,0,100,100"/> 
     </GeometryGroup> 
     </Border.Clip> 
    </Border> 
    <ContentPresenter Grid.Row="2" ContentTemplate="{TemplateBinding ContentTemplate}" 
         Content="{TemplateBinding Content}" Margin="{TemplateBinding Padding}"/> 
    <ContentControl x:Name="HeaderContainer" Margin="6,0,0,0" Grid.Row="0" Grid.RowSpan="2" HorizontalAlignment="Left" IsEnabled="False" > 
     <ContentPresenter Margin="3,0,3,0" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" /> 
    </ContentControl> 
    </Grid> 
</ControlTemplate> 

Любая помощь очень ценится!

ответ

2

Самый простой способ - использовать RenderTransform. Для Exemple:

<TextBlock Background="Red" Width="100" Height="50"> 
    <TextBlock.RenderTransform> 
     <RotateTransform Angle="270"></RotateTransform> 
    </TextBlock.RenderTransform> 
    My title! 
</TextBlock> 

Вы также можете указать центр вращения с свойством CenterX и CenterY

Надеется, что это помогает!

EDIT

Чтобы изправлен в положение этикетки вы можете использовать холст, как это:

<Canvas Margin="0,45,0,-45"> 
    <Canvas.RenderTransform> 
     <RotateTransform Angle="270"></RotateTransform> 
    </Canvas.RenderTransform> 
    <TextBlock Background="Red"> 
     My title! 
    </TextBlock> 
</Canvas> 
+0

Да, я бы получил, что далеко, но жесткий бит он получает его правильно установлен. –

Смежные вопросы