旋转的文本块没有正确的长度

时间:2013-08-13 13:19:54

标签: c# wpf rotation grid textblock

我正在尝试动态填充WPF应用程序中的Grid。

我正在创建一行,然后创建一些列。我在每一栏中添加一个文本块,如下所示:

GrdMainGrid.RowDefinitions.Add(new RowDefinition(Height = new GridLength(150, GridUnitType.Pixel);
GrdMainGrid.RowDefinitions.Add(new RowDefinition(Height = new GridLength(1, GridUnitType.Star);

for(var i=0; i<4; i++)
{
  GrdMainGrid.ColumnDefinitions.Add(new ColumnDefinition {With = new GridLength(25, GridUnitType.Pixel)});
}
var header = new TextBlock {Text = "Header1", RenderTransform = new RotateTransform(-90), Width = 150, Margin = new Thickness(0), VerticalAlignment = VerticalAlignment.Bottom, HorizontalAlignment = HorizontalAlignment.Left};
.
.
.
Grid.SetColumn(header, 0);
Grid.SetRow(header, 0);
.
.
.
GrdMainGrid.Children.Add(header);

文本块旋转-90度。 虽然列的大小设置为25像素,但我没有显示所有文本,当我增加列的大小时,文本块中的文本也会增加。见图 enter image description here

enter image description here

如果文本块没有旋转且它不适合列,我可以理解这一点。但是当它旋转时,它与柱子的大小有什么关系呢。 是否有可能在不减小文本大小的情况下减少列的宽度? Tnx提前。

1 个答案:

答案 0 :(得分:3)

使用LayoutTransform而不是RenderTransform。

    var header = new TextBlock { Text = "Header1", LayoutTransform = new RotateTransform(-90), Width = 150, Margin = new Thickness(0), VerticalAlignment = VerticalAlignment.Bottom, HorizontalAlignment = HorizontalAlignment.Left };