我在WPF窗口中有一个网格,并在其第一列中包含一个标签。我已经为标签应用了SkewTransform。如果我减小列宽,标签会显示一半
alt text http://freephotoupload.net/images/673_Lable.jpg
我希望它显示Prashant
,我的主要目的是减少标签旁边的额外空白
XAML代码
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="146.334" />
<ColumnDefinition Width="94.666" />
</Grid.ColumnDefinitions>
<Label Margin="0" VerticalAlignment="Center" Width="Auto" Name="label1" RenderTransformOrigin="0.5,0.5" Content="Prashant">
<Label.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="1"/>
<SkewTransform AngleX="0" AngleY="0"/>
<RotateTransform Angle="-90"/>
<TranslateTransform X="0" Y="0"/>
</TransformGroup>
</Label.RenderTransform>
</Label>
</Grid>
任何建议请....
答案 0 :(得分:2)
执行LayoutTransform
而不是RenderTransform
。
在WPF中,RenderTransforms
在控件布局后执行。
在您的情况下,Label
首先被列宽缩短;然后,应用RenderTransform(旋转是唯一可以执行任何操作的旋转),从而导致奇怪的Label
。
在布局控件之前完成LayoutTransform
。
像这样:
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="146.334" />
<ColumnDefinition Width="94.666" />
</Grid.ColumnDefinitions>
<Label
Name="label1"
Content="Prashant"
Margin="0"
Width="Auto"
VerticalAlignment="Center"
RenderTransformOrigin="0.5,0.5">
<Label.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="1"/>
<SkewTransform AngleX="0" AngleY="0"/>
<RotateTransform Angle="-90"/>
<TranslateTransform X="0" Y="0"/>
</TransformGroup>
</Label.LayoutTransform>
</Label>
</Grid>