ScrollChangedEventArgs.ExtentHeightChangeを使用して、ScrollChangedがコンテンツの変更またはユーザーの操作によるものかどうかを知ることができます。コンテンツが変更されていない場合、ScrollBarの位置は自動スクロールモードを設定または設定解除します。コンテンツが変更されたら、自動スクロールを適用できます。背後
コード:
private Boolean AutoScroll = true;
private void ScrollViewer_ScrollChanged(Object sender, ScrollChangedEventArgs e)
{
// User scroll event : set or unset autoscroll mode
if (e.ExtentHeightChange == 0)
{ // Content unchanged : user scroll event
if (ScrollViewer.VerticalOffset == ScrollViewer.ScrollableHeight)
{ // Scroll bar is in bottom
// Set autoscroll mode
AutoScroll = true;
}
else
{ // Scroll bar isn't in bottom
// Unset autoscroll mode
AutoScroll = false;
}
}
// Content scroll event : autoscroll eventually
if (AutoScroll && e.ExtentHeightChange != 0)
{ // Content changed and autoscroll mode set
// Autoscroll
ScrollViewer.ScrollToVerticalOffset(ScrollViewer.ExtentHeight);
}
}
ない、まさにそれを行う方法を確認してください。しかし、なぜプログラムは 'field'11'に達したときに自動スクロールしますが、' field002'に達したときには自動スクロールしませんか?一番下にあるかどうかを検出する必要がありますか? – Ian
@Ianはい画面の下のフィールドを埋めるときにクライアントがより多くのフィールドを表示したいので、下にあるかどうかを検出する必要があります。 –