WPF - возможно ли добавить событие OnVerticalOffsetChanged в пользовательское текстовое поле? - PullRequest
2 голосов
/ 13 апреля 2010

Есть ли для меня способ сделать это?

1 Ответ

7 голосов
/ 14 апреля 2010

Вы можете узнать, когда VerticalOffset изменяется, добавив обработчик события ScrollViewer.ScrollChanged в свой TextBox. Примерно так:

<TextBox AcceptsReturn="True" ScrollViewer.ScrollChanged="TextBox_ScrollChanged" />

TextBox внутренне использует ScrollViewer, поэтому его событие ScrollChanged будет всплывать до TextBox (где вы можете его обработать). Аргументы события включают информацию о том, что изменилось, например, VerticalChange (количество, которое элемент управления прокрутил вертикально).

private void TextBox_ScrollChanged(object sender, ScrollChangedEventArgs e) {
    System.Diagnostics.Debug.WriteLine(string.Format("************ {0}", e.VerticalChange));
}
...