2013-04-10 3 views
1

Canvas에 UserControl이 있습니다. 내가 PreviewTouchDown을 다음과 같이 사용하면 :PreviewTouchUp vs. previewTouchDown

actualNode.TextContainer.PreviewTouchDown += delegate(object o, TouchEventArgs args) 
       { actualNode_PreviewTouchDown(o, args, actualNode, name); }; 

이 발생합니다. 하지만 대신 PreviewTouchUp을 사용하면 그렇지 않습니다. 그러나 나는 내 생각을 위해이 두 가지를 모두 사용해야한다. "TouchUp"또는 "TouchDown"에서도 마찬가지입니다.

누군가 그 일이 일어나는 이유를 알고 있습니까?

답변

1

이 동작에는 여러 가지 이유가있을 수 있습니다.

캔버스의 부모 중 하나가 ScatterViewItem입니까? 해당하는 경우 ScatterViewItem이 이벤트를 처리합니다.

부모 중 한 명이 ManipulationEvents을 사용합니까? 이 경우 IsManipulationEnabledtrue으로 설정해야합니다.

또 다른 힌트는 도구 스눕 (http://snoopwpf.codeplex.com/)을 사용하여 발생한 이벤트와 누가 어떤 이벤트를 처리하는지 확인하는 것입니다.

+0

예, 부모 중 하나는 ScatterViewItem입니다 (실제로 중첩 된 UI 임). 거기에 IsManipulationEnabled = true를 설정해야합니까? 그리고 도구에 대한 힌트를 주셔서 감사합니다. – Judith

+0

아니요, 'IsManipulationEnabled'를 true로 설정할 필요가 없습니다. 툴을 사용하면'ScatterViewItem'이 이벤트를 처리하는 것을 볼 수 있습니다. 다음 링크를보십시오. http://social.msdn.microsoft.com/Forums/en-US/surfaceappdevelopment/thread/17b69899-69cb-429c-8fa2-f6623c5a62c3 질문에 대한 대답을 읽으십시오. ScatterViewItem 컨트롤이 ContactUp 이벤트를 발생 시키겠습니까? '. 당신이 지명 한 모든 옵션이 있습니다. –

0

호출 된 메서드에서 e.Handled = true;을 설정하면 PreviewTouchUp 이벤트가 발생하고 해당 메서드가 호출됩니다.

+1

자식의'PreviewTouchDown' /'TouchDown'에'e.Handled = true'를 설정하면'ScatterViewItem'이 move-/scale-/rotatable이 아닌 것 같습니다. 위의 의견에 게시 된 링크를 참조하십시오. –

+0

UserControls는 이동할 필요가 없습니다 ... 고정 위치와 크기가 있습니다. 임베디드 된 캔버스 만 움직일 수 있어야합니다. – Judith