본문 바로가기

개발자국/WPF / Expression

[WPF] Scrollbar Position Event

요즘 폰으로 스크롤을 하다 보면,

스크롤이 다 내려갈 즈음에 Data가 Update 되는 경우가 많다.

이걸 WPF의 Listbox 나 Datagrid 혹은 ScrollViewer 에서 적용하기 위해

알아보았다.

Test를 하기 위해, ScrollViewer를 만들고 ScrollChanged Event를 받았다.

private void scrollViewer1_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
    ScrollViewer aa = new ScrollViewer();
 
    textBlock1.Text = e.VerticalOffset.ToString();
 
    textBlock2.Text = e.ExtentHeight.ToString();
 
    textBlock3.Text = e.ViewportHeight.ToString();
 
    double percent = 0;
 
    percent = ((e.VerticalOffset + e.ViewportHeight) / e.ExtentHeight);
 
    textBlock4.Text = ((int)(percent * 100)).ToString() + " %";
 
 }
더블클릭 신공으로 Event를 받아버려서 테스트를 했다.
image_thumb
<<= e.VerticalOffset : 보이는 부분의 가장 상단을 의미한다. 초기값 0
 
 
 
 
 
 
 
 
e.ViewportHeight : 현재 보이는 영역의 Height를 말한다. 스크롤바와 같은 높이라고 보면 되겠다.
 
image_thumb[1]
e.ExtentHeight : 스크롤이 생겨났을 때, 스크롤이 안생길때까지 세로로 펼친 모습,
즉, 스크롤이 없다고 가정하였을 때, 쭉 펼친 높이라 할 수 있다.
위의 예제를 실행해 보면 textBlock4 에서 높이의 Percentage가 나오는 것을 확인할 수 있다.
테스트용 프로그램이라 귀차니즘이 가득한 코드지만,
까먹기 쉬운 Scrollbar Event 이다.