2017-10-13 88 views
0

我在.Net中有一個項目,我似乎無法獲取textblock中的文本以包裝。TextBox不包裹

 titleBlock = new TextBlock(); 
     titleBlock.FontSize = 30; 
     titleBlock.TextWrapping = System.Windows.TextWrapping.Wrap; 
     titleBlock.Text = "jkhkjhkjh kjhkjhkjhkjhk jhkjh kjh kjh kjh kjh kjh kjh jkh k"; 
     titleBlock.Padding = new System.Windows.Thickness(20); 
     titleBlock.Foreground = Brushes.White; 
     titleLabel.Content = titleBlock; 
     titleLabel.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center; 
     titleLabel.VerticalContentAlignment =System.Windows.VerticalAlignment.Center; 
     titleLabel.Margin = new System.Windows.Thickness(20, 30, 20, 20); 

     canvas.Children.Add(titleLabel); 

目前的文本居中。不過,我似乎無法讓文字換行。如果我的文本太多,它只是在屏幕上而不是在屏幕上顯示。

+0

標題和描述不匹配。它是'TextBox'還是'TextBlock'? – Sach

+0

而且它是WPF還是WinForms? – Sach

+0

@Sach我認爲這是WPF – lost9123193

回答

0

假設你canvas變量是Canvas那麼你的問題是,您使用的是Canvas,並沒有指定文本塊WidthMaxWidth。 A Canvas不會強迫任何類型的大小限制其子女;它將使它們甚至超越自己的邊界而無限制地發展。僅當TextBlock達到其允許的最大寬度時纔會出現文字換行。由於Canvas允許永遠不會發生的無限寬度。 A Canvas不是在絕大多數情況下使用的最佳面板。看看StackPanelGrid面板。

0

就像傑森博伊德說的,「A Canvas不強迫任何類型的大小限制其子女」。您應該爲textblock指定一個Width值。

var labelHorMargin = titleLabel.Margin.Left + titleLabel.Margin.Right; 
var blockHorMargin = titleBlock.Margin.Left + titleBlock.Margin.Right; 

titleBlock.Width = canvas.Width - labelHorMargin - blockHorMargin;