2017-10-13 10 views
0

私は.NETでプロジェクトを作成していますが、テキストブロック内のテキストを折り返すことはできません。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); 

現在、テキストは中央揃えされています。しかし、私はテキストをラップするように見えることはできません。私はあまりにも多くのテキストを持っている場合、それは画面に収まるのではなく画面から外れます。あなたのcanvas変数がCanvasであると仮定すると、

+0

タイトルと説明が一致しません。それは 'TextBox'か' TextBlock'ですか? – Sach

+0

それはWPFかWinFormsですか? – Sach

+0

@SachこれはWPFだと思います – lost9123193

答えて

0

は、あなたの問題は、あなたがCanvasを使用していることであり、あなたのテキストブロックのためWidthまたはMaxWidthを指定していません。 Canvasは、子どもに大きさの制限を強制しません。それは彼ら自身の国境を越えても境界なしに成長することができます。テキストの折り返しは、TextBlockが最大許容幅に達すると発生します。 Canvasは決して起こらない無限の幅を許すので。 Canvasは、大多数の状況で使用するのに最適なパネルではありません。 StackPanelまたはGridパネルをご覧ください。

0

Jason Boydと同じように、「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; 
関連する問題