본문 바로가기

TechLog

WP7 앱의 가로/세로 방향 전환 이벤트 처리

WP7 실버라이트 앱에서 가로/세로 방향의 전환을 지원하려면, 대부분의 경우 SupportedOrientations 프로퍼티의 값을 PortraitOrLandscape로 지정해주는 것 만으로 방향 변경 이벤트를 올바로 처리할 수 있다. 하지만 간혹 가로/세로 방향에 따라서 페이지의 레이아웃 변경을 커스터마이징해야 하는 경우(하드웨어 키보드를 사용한다거나, 가상 키보드의 위치를 고려하여 요소를 효율적으로 배치해야 한다거나)도 있을 수 있다. 이런 경우 방향 전환이 일어날 때 필요한 코드를 직접 추가해야 한다.

PhoneApplicationFrame, PhoneApplicationPage 클래스는 모두 OrientationChanged 이벤트를 갖고 있는데, 특히 PhoneApplicationPage는 기본적으로 오버라이드할 수 있는 OnOrientationChanged 메서드를 갖고 있다. 이는 이벤트 핸들링 없이 해당 페이지의 코드 비하인드 파일에 직접 OnOrientationChanged 메서드를 작성하면 된다는 의미이다. OnOrientationChanged 메서드는 다음과 같은 코드로 구성된다:

 

protected override void OnOrientationChanged(OrientationChangedEventArgs args)
{
    ...
    base.OnOrientationChanged(args);
}

이 메서드 안에서 페이지 객체의 Orientation 프로퍼티(PageOrientation 열거형 타입이다)를 사용해 현재 디바이스의 방향이 어떻게 되어 있는지를 판별하면 된다.

만약 가로/세로 방향이 전환될 때 적용되는 코드가 개별 페이지에 적용되는 것이 아니라 프로그램 전체 수준에서 적용되는 내용이라면, App 클래스의 생성자에서 RootFrame의 OrientationChanged 이벤트를 핸들링하도록 하자.