2017-10-12 73 views
0

我有以下的文本块,我似乎无法得到文本对齐:文本块不对齐

TextBlock headerBlock; 
Canvas headerContainer; 

public setLayout() 
{ 
    headerContainer= new Canvas(); 
    headerContainer.Background = new Brushes.Black; 

    headerBlock= new TextBlock(); 
    headerBlock.FontSize = 10; 
    headerBlock.Text = "This must be centered"; 
    headerBlock.TextAlignment = System.Windows.TextAlignment.Center; 
    headerBlock.Foreground = Brushes.White; 
    headerBlock.Padding = new System.Windows.Thickness(20); 


    headerContainer.Children.Add(headerBlock); 

} 

出于某种原因,TextAlignment不对齐文本。有什么我可以添加到强制headerBlock文本对齐中心?

+0

您可以在''XAML''中使用'VerticalAlignment = Center'。你尝试过吗? – Brian

回答

2

此行为是由于画布

=>画布根据像素位置组织元素。 用网格取代你的画布,它会工作。

你还必须写什么zambonee建议:

TextAlignment将调整控制内的文本。 HorizontalAlignmentVerticalAlignment将使控件在其容器内部对齐。

=>与两个玩,以获得你所需要的。

+0

将网格更改为画布,谢谢! – lost9123193

0

TextBlock未扩展为填充其父项,并可能卡塞在其父项的左上角。试试这个

headerBlock.HorizontalAlignment = HorizontalAlignment.Center; //or Stretch with TextAlignment = Center 
headerBlock.VerticalAlignment = VerticalAlignment.Center; //or Stretch 
+0

啊我试过这个,它似乎没有工作。我在代码中添加了1行代码,headerContainer广告代码块,认为我不确定它是否会影响对齐 – lost9123193

+0

Canvas忽略其子元素的对齐属性。 – Clemens