Получить элемент пользовательского интерфейса в координатах касания - PullRequest
1 голос
/ 25 января 2012

Я уверен, что читал, что есть способ получить координаты TouchDown в приложении WPF и выяснить, какие элементы пользовательского интерфейса находятся «под» этим прикосновением.Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 26 января 2012

Пусть ваши элементы пользовательского интерфейса расширяют класс UIElement следующим образом:

class MyUIElement : UIElement
    {
        protected override void OnManipulationStarting(System.Windows.Input.ManipulationStartingEventArgs e)
        {
            base.OnManipulationStarting(e);
            UIElement involvedUIElement = e.Source as UIElement;

            // to cancel the touch manipulaiton:
            e.Cancel();
        }
    }

disabledUIElement должен содержать элементы пользовательского интерфейса, которые вызвали событие касания, если вам нужно отменить манипуляцию для определенных элементов, вам просто нужно вызвать e.Cancel();

Надеюсь, это поможет!

0 голосов
/ 25 января 2012

Вы должны выполнить тест на попадание против визуального дерева.

Вот пример с щелчком мыши (но касание - более или менее то же самое в этом отношении):

// Respond to the left mouse button down event by initiating the hit test.
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    // Retrieve the coordinate of the mouse position.
    Point pt = e.GetPosition((UIElement)sender);

    // Perform the hit test against a given portion of the visual object tree.
    HitTestResult result = VisualTreeHelper.HitTest(myCanvas, pt);

    if (result != null)
    {
        // Perform action on hit visual object.
    } 
}

Другая перегрузка HitTest может дать вам несколько визуальных эффектов попадания.

...