내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-07-09 03:58

제목

[WPF] Animated ScrollViewer (스크롤뷰어 애니메이션 적용)


스크롤뷰어를 원하는 지점으로 스크롤시키고자  때는

ScrollViewer.ScrollToHorizontalOffset(), ScrollToVerticalOffset() 함수를 사용한다.

 

원하는 지점까지 스르륵 애니메이션을 적용해서 스크롤시키고 싶은데

위의 함수는 그런 기능을 지원하지 않고,

그렇다면 DoubleAnimation 등의 애니메이션을 사용해야 하는데,

 

ScrollViewer.HorizontalOffset, ScrollViewer.VerticalOffset 2개의 의존속성은 get  지원해서 DoubleAnimation  적용할  없다.

따라서 스크롤뷰어에서 스크롤 기능에 애니메이션을 적용하려면 스크롤뷰어를 상속받아 별도의 스크롤뷰어를 만드는 방법밖에 없다.

 

별도의 스크롤뷰어를 만들어 HorizontalOffset, VerticalOffset 비슷하되 get, set 모두를 지원하는 의존속성을 만들어  속성에 애니메이션을 적용하는 방법이다.

 

 

과정은 다음과 같다.

 

1. 새로운 클래스를 선언하고ScrollViewer  상속받도록 선언한다.

  - 예시에서는 'AniScrollViewer' 라고 명명함

2. HorizontalOffset, VerticalOffset  대신할 새로운 의존속성 만든다.

  - 예시에서는 'CurrentVerticalOffset', 'CurrentHorizontalOffset' 라고 명명함

3. 새로 만든 의존 속성이 변경되면 해당 컨트롤의 스크롤이 이동하도록 한다.

 

 

4. 기존의 ScrollViewer  위에서 만든 새로운 ScrollViewer 대체하고2번에서 만든 의존속성을 사용하여 애니메이션을 적용한다.

  - Animation 객체를 만들고해당 애니메이션의 TargetProperty  위에서 만든 의존 속성으로 지정한다.

 

다음과 같은 방법으로 스크롤뷰어에 애니메이션을 적용할  있다.

출처1

http://yimjang.tistory.com/entry/WPF-Animated-ScrollViewer-스크롤뷰어-애니메이션-적용

출처2