Windows Phone 8 에서 Pivot 와 Panorama 컨트롤 의 제스처 감청 변화 (안내 페이지 에 사용)

5448 단어 WinphonePivot
http://www.cnblogs.com/wzk89/archive/2013/04/21/3034230.html
배경
윈도 폰 7 시대 에 우 리 는 Manipulation Started, Manipulation Delta, ManipulationComplete 사건 을 감청 함으로써 Pivot 나 Panorama 컨트롤 이 왼쪽으로 미 끄 러 지 는 지 오른쪽으로 미 끄 러 지 는 지 판단 할 수 있다.
예 를 들 어 Windows Phone 7 에서 저 희 는 미끄럼 제스처 이 벤트 를 감청 하여 Pivot 컨트롤 중 첫 번 째 항목 은 오른쪽으로 미 끄 러 지지 못 하고 마지막 항목 은 왼쪽으로 미 끄 러 지지 못 합 니 다. 다음 과 같은 구체 적 인 실현 방법 은 다음 과 같 습 니 다.
   1:  protected override void OnManipulationCompleted(ManipulationCompletedEventArgs e)
   2:          {
   3:              this.pivot.IsHitTestVisible = true;
   4:          }
   5:          protected override void OnManipulationDelta(ManipulationDeltaEventArgs e)
   6:          {
   7:
   8:              if (this.pivot.SelectedIndex == 0)
   9:              {
  10:                  if (e.DeltaManipulation.Translation.X > 0)
  11:                  {
  12:                      e.Complete();
  13:                      this.pivot.IsHitTestVisible =false;
  14:                  }
  15:              }
  16:              if (this.pivot.SelectedIndex == 4)
  17:              {
  18:                  if (e.DeltaManipulation.Translation.X  
  
  19:                  {
  20:                      e.Complete();
  21:                      this.pivot.IsHitTestVisible = true;
  22:                  }
  23:              }
  24:          }

며칠 전에 나 는 이 코드 를 윈도 폰 8 프로젝트 에 이식 하여 테스트 를 했 는데 아무런 효과 가 없 었 다.그리고 나 서 나 는 이 세 가지 사건 에 정지점 을 넣 어 디 버 깅 을 했다.
Pivot 컨트롤 이 미 끄 러 지 는 것 을 발 견 했 을 때 ManipulationStarted 이벤트 만 실 행 했 을 뿐 ManipulationDelta 와 ManipulationComplete 이 벤트 는 실행 되 지 않 았 다 는 것 이 신기 합 니 다!
원인 을 추적 하 다
문 제 를 발견 한 후 나 는 원인 을 추적 하기 시작 했다.
추적 1: MSDN 이 Pivot 에 대한 라 이브 러 리 설명 파일;
MSDN 에 Pivot 컨트롤 에 대한 사용 설명 사이트 가 두 군데 존재 하 는 것 을 발 견 했 습 니 다.
Windows Phone 7 의 Pivot 컨트롤 에 대한 설명: 여 기 를 클릭 하여 보십시오.
Windows Phone 8 의 Pivot 컨트롤 에 대한 설명: 여 기 를 클릭 하여 보십시오.
계승 차원 구 조 를 비교 한 결과:
Windows Phone 7 에서 Pivot 컨트롤 은 일반적인 매개 변 수 를 사용 하 는 클래스 를 통 해 Items Control 에서 파생 됩 니 다.
public class TemplatedItemsControl : ItemsControl where T : System.Windows.FrameworkElement, new()
이 는 Items Control 이 T 형식의 하위 요소 로 채 워 지고 Pivot 는 Templated Items Control 에서 파생 되 지만 유형 매개 변 수 는 PivotItem 으로 설정 되 어 있 음 을 나타 낸다.
public class Pivot : TemplatedItemsControl
Windows Phone 8 에서 Pivot 컨트롤 은 Items Control 에서 직접 파생 됩 니 다.
public class Pivot : ItemsControl
그러나 클래스 구조 만 으로 는 아무런 문제 도 설명 할 수 없다. 윈도 폰 7 이나 8 에서 Pivot 는 System. 윈도 우즈. Control 에서 계승 된다. 이론 적 으로 세 개의 제스처 사건 을 감청 할 수 있다.
추적 2: 윈도 폰 8 의 피벗 에 대한 설명 에서 '신대륙' 발견;
여러분 은 여 기 를 클릭 하여 상세 한 설명 문 서 를 볼 수 있 습 니 다.
또한 윈도 폰 8 에서 파노라마 컨트롤 에 대한 설명 에 대해 여 기 를 클릭 하여 상세 한 설명 문 서 를 보십시오.
이 문 서 를 통 해 나 는 윈도 폰 8 의 Pivot 컨트롤 과 Panorama 컨트롤 에 드래그, 가볍게 스 치 거나 클릭 하 는 등 흔 한 제스처 가 내장 되 어 있 는 것 을 발견 했다.
결론.
이상 의 내 가 문제 가 발생 한 원인 을 추적 한 결과 내 가 얻 은 결론 은:
Windows Phone 8 에서 Pivot 컨트롤 이나 Panorama 컨트롤 을 드래그 할 때 사실은 Manipulation 관련 사건 이 발생 했 지만 Pivot 나 Panorama 내부 에 포 장 된 제스처 경로 가 사건 에 의 해 직접 차단 되 어 우리 가 Manipulation Delta 와 ManipulationComplete 이벤트 에서 처리 하 는 어떠한 사용자 정의 논리 도 실행 되 지 않 습 니 다.
동시에 나 는 간단 한 비교 검증 을 실시 했다.
페이지 에 텍스트 상자 컨트롤 과 Pivot 컨트롤 을 설치 한 다음 페이지 의 cs 파일 에서 OnManipulation Started, OnManipulation Delta, OnManipulationComplete 세 가지 이 벤트 를 override 합 니 다.
텍스트 상자 컨트롤 을 드래그 할 때 OnManipulation Delta 와 OnManipulationComplete 이 벤트 는 실행 되 지만 Pivot 컨트롤 을 드래그 하면 두 이 벤트 는 실행 되 지 않 고 OnManipulation Started 이 벤트 는 실 행 됩 니 다.
그러면 PivotItem 의 한 컨트롤 을 감청 하 는 ManipulationStarted, ManipulationDelta, ManipulationComplete 세 가지 이 벤트 를 시도 해 볼 수 있 습 니 다. 마찬가지 로 ManipulationDelta 와 ManipulationComplete 에서 사용자 정의 논리 가 실행 되 지 않 는 다 는 것 을 알 수 있 습 니 다.
그래서 윈도 폰 8 에서 온 매 니 폴 레이 션 델 타 와 온 매 니 폴 레이 션 컴 플 리 트 사건 을 통 해 피 봇 컨트롤 을 감청 할 수 없 는 것 이 왼쪽으로 끌 리 는 것 인지 오른쪽으로 끌 리 는 것 인지 생각 합 니 다.
마찬가지 로 저도 Windows Phone 8 에서 Panorama 컨트롤 에 대해 같은 방식 으로 테스트 를 했 습 니 다. 여 기 는 제 가 설명 을 많이 하지 않 겠 습 니 다. 관심 이 있 는 친구 들 이 테스트 해 볼 수 있 습 니 다.
PS: 여러분 이 좋 은 해결 방향 이 있다 면 저 에 게 제공 하고 같이 공부 하 기 를 바 랍 니 다!
문제 가 발산되다
다 들 윈도 폰 툴 킷 을 써 봤 을 텐 데 제스처 감청 관련 데모 가 들 어 있어 요.윈도 폰 7 과 8 의 버 전 소스 코드 를 비교 해 보면 다음 과 같 습 니 다.
WP7 버 전에 서 Gesture Sample. xaml 페이지 는 Toolkit 에 포 장 된 제스처 이 벤트 를 참조 하여 제스처 를 모니터링 합 니 다.
한편, WP8 버 전에 서 Gesture Sample. xaml 페이지 는 기 존의 Toolkit 패 키 징 제스처 이 벤트 를 인용 하지 않 고 본질 적 으로 Windows Phone 이 자체 적 으로 가지 고 있 는 ManipulationStarted, ManipulationDelta, ManipulationComplete 세 가지 이 벤트 를 사용 하여 처리 합 니 다.
또한 윈도 폰 8 에 서 는 Pivot 와 Panorama 컨트롤 이 내장 되 어 있 습 니 다.
이상 윈도 폰 8 에서 Pivot 와 Panorama 컨트롤 러 의 미끄럼 제스처 에 대한 감청 시험 을 통 해 벽돌 을 던 져 옥 을 끌 어 올 리 는 역할 을 하고 싶 습 니 다.
 
관련 참고 글:
  • Windows Phone 7 에서 Pivot 류 설명 문서;
  • Windows Phone 8 에서 Pivot 류 설명 문서;
  • Windows Phone Pivot 컨트롤;
  • Windows Phone 8 의 Panorama 류 설 명 문서;
  • Windows Phone 의 전경 컨트롤;
  • 좋은 웹페이지 즐겨찾기