Некоторые мультисенсорные локации не обнаруживаются в wp7 silverlight - PullRequest
0 голосов
/ 30 октября 2011

Привет. Я пытаюсь создать простое приложение для драм-машины в silverlight для wp7. Я обнаружил, что примерно в 60% случаев, когда я касаюсь экрана в 2 разных местах в одно и то же время (или почти в одно и то же время), одно из мест не обнаруживается.

Я подключил сетку Layoutroot, чтобы инициировать события, связанные с манипуляциями, как показано ниже. Проблема возникает примерно в 60% случаев, когда я одновременно нажимаю как часть экрана, назначенную для высокой шляпы, так и часть экрана, назначенную для ударного барабана или малого барабана, только место касания одного из этих звуков. будет захвачен в сенсорной панели.

Я тестирую LG Optimus под управлением манго. Любые идеи о том, как обойти эту проблему? Приведет ли опрос вместо возбуждения событий к лучшим результатам? Мне лучше создавать это приложение как игру XNA, а не как приложение silverlight? Любая помощь или идеи будут высоко ценится.

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

1 Ответ

1 голос
/ 31 октября 2011

У меня была похожая проблема с элементом списка и контекстным меню. Я исправил это так:

Присоедините ваш корневой фрейм к MouseLeftButtonDown = "LayoutRoot_MouseLeftButtonDown"

Это событие всегда происходит на 100%.

В событии Point clickPoint = e.GetPosition (null);

теперь пришло время идентифицировать объект, если таковой имеется, который находится в этих координатах экрана.

Ниже приведен мой код для идентификации элемента списка. Вы можете использовать его со своими объектами пользовательского интерфейса:

        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;

Cheers, Влад

...