Как определить, находится ли контакт с поверхностью поверх ScatterView? - PullRequest
1 голос
/ 05 апреля 2009

Это (своего рода) ситуация, аналогичная описанной в SDK Sample Cart для MS Surface.

У меня есть приложение с двумя ScatterView. Первый охватывает полное окно Surface («поверхность»). Второй находится в объекте TagVisualization («pod»). Возможно, доступно более одного модуля (если на столе нет более одного тега).

Я хотел бы иметь возможность перетаскивать ScatterViewItem из «pod» на «поверхность» или в другой «pod». У меня нет проблем с обнаружением, если ScatterViewItem оставляет своего родителя ScatterView. Кроме того, нет проблем с переопределением ScatterViewItem.

Однако я хочу определить, на каком ScatterView перетаскивается элемент. В примере SDK они использовали визуальный элемент (в данном случае - эллипс), который находится ниже ScatterView. VisualTreeHelper.HitTest используется для определения того, находится ли контакт над эллипсом. Если это так, обнаружен «подключенный» ScatterView.

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

Существуют ли лучшие способы для такого рода «испытаний»?

Спасибо, Bart

1 Ответ

1 голос
/ 08 апреля 2009

Ну, во-первых, у меня есть предположение, что с помощью Surface скоро будет намного проще перетаскивать мышью, поэтому я бы не стал тратить слишком много времени на раздражение над дополнительным элементом.

Но, рассматривая это больше как общий вопрос - вам не обязательно добавлять визуальный элемент просто для того, чтобы выполнить тестирование, но тестирование по-прежнему будет лучшим способом определить, есть ли конкретный элемент в данном случае. точка.

Образец, о котором вы говорите, не просто добавляет эллипс для тестирования, он также служит фоном для «стручка». Таким образом, они хотели справиться с падением только тогда, когда контакт был над этим эллипсом, потому что этот эллипс определил границы. Другой способ может заключаться в том, чтобы установить фон вашего рассеянного обзора и сделать самый сильный удар по этому элементу управления. Затем, если вы хотите изменить границы «стручка» на нечто иное, чем прямоугольник, вам нужно применить обтравочный контур к представлению рассеяния.

...