0

안녕하세요 저는 wp7 용 실버 라이트에서 간단한 드럼 머신 어플리케이션을 만들려고합니다. 나는 같은 시간 (또는 거의 같은 시간에) 2 개의 다른 위치에서 화면을 탭할 때 그 위치의 60 %가 감지되지 않는 것을 발견하고있다.일부 멀티 터치 위치가 wp7 실버 라이트에서 감지되지 않습니다.

다음과 같이 시작된 조작에 따라 이벤트를 발생 시키려면 Layoutroot 그리드를 배선했습니다. 문제는 하이햇에 할당 된 화면의 섹션과 킥 드럼에 할당 된 화면의 섹션 또는 스네어를 동시에 누르면이 사운드 중 하나의 터치 위치 만 누르면 약 60 %의 시간입니다 터치 패널에 캡처됩니다.

나는 LG optimus 실행 망고에서 테스트를하고 있습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 이벤트를 제기하는 대신 폴링을 사용하면 더 나은 결과를 얻을 수 있습니까? Silverlight 응용 프로그램이 아닌 XNA 게임으로이 응용 프로그램을 만드는 것이 좋을까요? 어떤 도움이나 아이디어라도 높이 평가할 수 있습니다.

<Grid x:Name="LayoutRoot" Background="Transparent" ManipulationStarted="LayoutRoot_ManipulationStarted"> 
+0

그것은이 문제를 해결하는 대신 모금 이벤트 폴링을 끈다. – Chris

답변

1

나는 목록 상자 항목 및 상황에 맞는 메뉴와 비슷한 문제가있었습니다. 나는 이런 식으로 고정 :

는 MouseLeftButtonDown = "LayoutRoot_MouseLeftButtonDown"

이 이벤트는 100 %가 항상 발생로 rootframte를 연결합니다.

이벤트에서 포인트 clickPoint = e.GetPosition (null);

이제 화면 좌표에있는 개체 (있는 경우)를 식별 할 시간입니다.

다음은 목록 상자를 식별하는 코드입니다. 당신은 당신의 자신의 UI 객체로 사용할 수 있습니다 :

 ListBoxItem listBoxItem = null; 
     List<UIElement> listControls = (List<UIElement>)VisualTreeHelper.FindElementsInHostCoordinates(clickPoint , this); 
     foreach (UIElement ctrl in listControls) 
     { 
      if (ctrl is ListBoxItem) 
      { 
       listBoxItem = (ListBoxItem)ctrl; 
       break; 
      } 
     } 
     //get the index of the selected listboxitem. 
     ListBox view = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox; 

건배, 블라드

관련 문제