2015-02-22 2 views
-1

Я пытаюсь выяснить, как сделать длинное текстовое поле. Я знаю, что есть проблема, когда текстовое поле больше 2048. Однако, если вы составляете электронное письмо, которое больше, чем это, у него не было проблем. Какой тип управления используется для электронной почты?windows phone 8 long textbox control

<ScrollViewer> 
    <TextBox /> 
</ScrollViewer> 
+0

Что случилось с текстовым полем? –

+0

Как только количество текста превышает 2048, тогда оно отображает пробел –

+1

У вас есть код, демонстрирующий эту проблему? –

ответ

0

Этот blog post охватывает решение этой проблемы. В основном вам нужно разделить текст на несколько текстовых блоков, а затем добавить их в StackPanel.

private void ParseText(string value) 
{ 
    if (this.stackPanel == null) 
    { 
     return; 
    } 
    // Clear previous TextBlocks 
    this.stackPanel.Children.Clear(); 
    // Calculate max char count 
    int maxTexCount = this.GetMaxTextSize(); 

    if (value.Length < maxTexCount) 
    { 
     TextBlock textBlock = this.GetTextBlock(); 
     textBlock.Text = value; 
     this.stackPanel.Children.Add(textBlock); 
    } 
    else 
    { 
     int n = value.Length/maxTexCount; 
     int start = 0; 
     // Add textblocks 
     for (int i = 0; i < n; i++) 
     {      
      TextBlock textBlock = this.GetTextBlock(); 
      textBlock.Text = value.Substring(start, maxTexCount); 
      this.stackPanel.Children.Add(textBlock); 
      start = maxTexCount; 
     } 

     // Pickup the leftover text 
     if (value.Length % maxTexCount > 0) 
     { 
      TextBlock textBlock = this.GetTextBlock(); 
      textBlock.Text = value.Substring(maxTexCount * n, value.Length - maxTexCount * n); 
      this.stackPanel.Children.Add(textBlock);     
     } 
    } 
} 
Смежные вопросы