2013-08-13 5 views
0

Я пытаюсь заполнить Grid в приложении WPF динамически.Повернутый текстовый блок имеет неправильную длину

Я создаю строку, а затем некоторые столбцы. в каждой колонке я добавить TextBlock, например:

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); 

Объект TextBlock поворачивается -90 градусов. Пока размер столбца равен 25 пикселам, i не отображает весь текст, когда я увеличиваю размер столбца, текст в текстовом блоке также увеличивается. см ПИК enter image description here

enter image description here

Я мог бы это понять, если TextBlock не вращался, и это не укладывалось в колонне. Но что это касается размера столбца при его повороте. И возможно ли каким-то образом уменьшить ширину столбца без уменьшения размера текста? Tnx заранее.

+0

Если он усечен, то повернут. Рассматривали ли вы просто укладку текста? – Paparazzi

+1

Почти хороший вопрос ... Почему вы повторили это (Difinition) вместо копирования? –

+0

Blam, я не уверен, что понимаю, что вы имеете в виду ... @HenkHolterman, потому что я хотел упростить его. В моем коде гораздо больше, чего я не хотел показывать здесь. просто важно. –

ответ

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 }; 
+0

Спасибо, это сработало. –

+0

+1 для элегантности! –