Windows Phone 8 에서 Pivot 와 Panorama 컨트롤 의 제스처 감청 변화 (안내 페이지 에 사용)
배경
윈도 폰 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 의 전경 컨트롤;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Oracle] PIVOT과 UNPIVOT의 동작 파헤치기우선 그림을 통해 적용 전 후 테이블, 쿼리와의 관계성을 파악하고 글을 읽는것을 추천한다. PIVOT() 사용결과에서 value로써 뿌리고자 하는, PIVOT()의 중간집계의 컬럼. PIVOT FOR 절 (초록색) ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.