2009-04-05 2 views
1

이것은 MS Surface 용 SDK 샘플 장바구니와 비슷한 (유사한) 상황입니다.표면 접촉이 ScatterView 이상인지 감지하는 방법?

두 개의 ScatterView가있는 응용 프로그램이 있습니다. 첫 번째 창은 전체 곡면 창 ('곡면')을 덮습니다. 두 번째 태그는 TagVisualization 객체 ('pod')에 있습니다. 사용할 수있는 포드가 두 개 이상일 수 있습니다 (테이블에 태그가 두 개 이상있는 경우).

ScatterViewItem을 'pod'에서 'surface'또는 다른 'pod'로 드래그 할 수 있기를 바랍니다. ScatterViewItem이 ScatterView 부모를 떠나는 지 감지하는 데는 아무런 문제가 없습니다. 또한 ScatterViewItem을 다시 보급하는 데 문제가 없습니다.

그러나 어떤 ScatterView가 항목을 끌고 있는지 감지하고 싶습니다. SDK 샘플에서는 ScatterViews 아래에있는 시각적 요소 (이 경우에는 타원)를 사용했습니다. VisualTreeHelper.HitTest는 연락처가 타원 위에 있는지 확인하는 데 사용됩니다. 그렇다면 '연결된'ScatterView가 발견됩니다.

나는 이것이 매우 우아한 해결책이라고 생각하지 않습니다. 연락 정보가 ScatterView를 넘었는지 여부를 감지하기 위해 시각적 요소를 넣고 싶지 않습니다.

'히트 테스트'의 이러한 종류를 수행하는 것이 더 나아 졌습니까? 우선

감사합니다, 바트

답변

1

글쎄, 나는 & 드롭 곧 표면에 훨씬 더 쉽게 얻을 것입니다 드래그 직감, 그래서 나는위한 추가적인 초조해 너무 많은 시간을 낭비하지 것이다 요소.

하지만 더 많은 것을 일반적인 질문으로 처리합니다. 히트 테스트를 수행하기 위해 반드시 시각적 요소를 추가 할 필요는 없지만 히트 테스트는 여전히 특정 요소가 있는지 확인하는 최선의 방법입니다. 주어진 지점.

당신이 말하는 샘플은 히트 테스팅을위한 타원을 추가하는 것이 아니라 '포드'의 배경으로도 사용되었습니다. 따라서 타원이 경계를 정의했기 때문에 연락처가 타원 위에있을 때만 드롭을 처리하려고했습니다. 다른 경로는 스 캐터 뷰의 배경을 설정하고 해당 컨트롤에 대해 적중 테스트를 수행하는 것입니다. 그런 다음 '포드'의 경계를 직사각형이 아닌 다른 것으로 변경하려면 스 캐터뷰에 클리핑 패스를 적용해야합니다.

+0

나는 배경을 알아 냈고 제대로 작동했지만 우아한 것은 아니었다. 그러나이 프로젝트의 기간에는해야했습니다. 감사 –