我正在尝试在XAML中创建类似groupbox的元素(对于Silverlight 2应用程序),但有一个转折点。
通常,组合框由边框组成,主要内容放在边框内,标题内容放在边框本身上。
我要做的是将标题文字放在左侧边框上,旋转270度并在顶部对齐。但是我试图找出旋转变换会让我的大脑受伤。
这是我现有Groupbox的ControlTemplate,我想改变一下:
<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>
非常感谢任何帮助!
答案 0 :(得分:2)
最简单的方法是使用RenderTransform。例如:
<TextBlock Background="Red" Width="100" Height="50">
<TextBlock.RenderTransform>
<RotateTransform Angle="270"></RotateTransform>
</TextBlock.RenderTransform>
My title!
</TextBlock>
您还可以使用属性CenterX和CenterY
指定旋转中心希望这有帮助!
修改强>
要调整标签位置,您可以像这样使用Canvas:
<Canvas Margin="0,45,0,-45">
<Canvas.RenderTransform>
<RotateTransform Angle="270"></RotateTransform>
</Canvas.RenderTransform>
<TextBlock Background="Red">
My title!
</TextBlock>
</Canvas>