2016-10-18 19 views
1

UWPアプリケーションのTextBoxの下部までスクロールする方法はありますか?UWP C#TextBoxの下部までスクロール

私のUWPへの移行に伴い、これは簡単なことではありませんでした。誰もがUWPアプリでテキストボックスの一番下までスクロールする必要がある場合、これはUWPアプリの

答えて

2

をするために動作しない、

textBox.SelectionStart = textBox.TextLength; 
textBox.ScrollToCaret(); 

:しかし

は、私がこれを使用することができるように使用される

textBox1テキストボックスを使用して、SCにしたいテキストボックスである

https://code.msdn.microsoft.com/windowsapps/How-to-scroll-to-the-a8ea5867

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)  
{  
    var grid = (Grid)VisualTreeHelper.GetChild(textBox1, 0);  
    for (var i = 0; i <= VisualTreeHelper.GetChildrenCount(grid) - 1; i++)  
     {  
      object obj = VisualTreeHelper.GetChild(grid, i);  
      if (!(obj is ScrollViewer)) continue;  
      ((ScrollViewer)obj).ChangeView(0.0f, ((ScrollViewer)obj).ExtentHeight, 1.0f);  
      break;  
     }  
    } 
} 

底に転がる。

0

https://code.msdn.microsoft.com/windowsapps/How-to-scroll-to-the-a8ea5867の回答を使用すると、スクロールアップ時に行が削除されることがありました。

それを修正するには、これを試してみてください。私は必ずしもしたくなかったので、

((ScrollViewer)obj).ChangeView(0.0f, ((ScrollViewer)obj).ExtentHeight, 1.0f, true); 

は、私はまた、イベントハンドラからメソッドを分離:

private void ScrollToBottom(TextBox textBox) 
{ 
    var grid = (Grid)VisualTreeHelper.GetChild(textBox, 0); 
    for (var i = 0; i <= VisualTreeHelper.GetChildrenCount(grid) - 1; i++) 
    { 
     object obj = VisualTreeHelper.GetChild(grid, i); 
     if (!(obj is ScrollViewer)) continue; 
     ((ScrollViewer)obj).ChangeView(0.0f, ((ScrollViewer)obj).ExtentHeight, 1.0f, true); 
     break; 
    } 
} 

主な違いは、このラインでありますテキストが変更されるたびにスクロールします。

関連する問題