2017-10-13 4 views
0

Ich habe ein Projekt in .NET und ich kann nicht scheinen, den Text innerhalb des Textblocks zu erhalten.TextBox nicht wrapping

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

Derzeit ist der Text zentriert. Allerdings kann ich den Text nicht umranden. Wenn ich zu viel Text habe, geht es einfach vom Bildschirm weg, anstatt auf dem Bildschirm zu passen.

+0

Ihr Titel und die Beschreibung stimmen nicht überein. Ist es "TextBox" oder "TextBlock"? – Sach

+0

Und ist es WPF oder WinForms? – Sach

+0

@Sach Ich denke, das ist WPF – lost9123193

Antwort

0

Ihre canvas Variable Angenommen ist ein Canvas dann Ihr Problem ist, dass Sie eine Canvas verwenden und eine Width oder MaxWidth für Ihren Textblock nicht angegeben. A Canvas erzwingt keine Größenbeschränkungen für seine Kinder; es wird ihnen erlauben, grenzenlos zu wachsen. Der Textumbruch erfolgt nur, wenn die TextBlock die maximal zulässige Breite erreicht hat. Da die Canvas unendliche Breite erlaubt, wird das nie passieren. A Canvas ist nicht das beste Panel in den meisten Situationen. Werfen Sie einen Blick auf die StackPanel oder Grid Panels.

0

Genau wie Jason Boyd sagte, "A Canvas zwingt keine Art von Größenbeschränkungen auf seine Kinder". Sie sollten einen Width Wert für die textblock angeben.

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

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