WPF: Обнаружение кликов на пути, вложенном в Canvas - PullRequest
2 голосов
/ 23 июня 2011

У меня есть несколько путей, программно вложенных в холст. Я в основном пытаюсь выяснить, как работает всплывающее окно кликов. Как настроить обработчик события холста, чтобы проверить, была ли точка щелчка также на пути, вложенном в холст. Это мой основной четный код, который работает, если пути не являются вложенными.

Как добавить обнаружение всплывающих кликов?

void Path_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
   var item = ((FrameworkElement)e.OriginalSource).DataContext as Path;

   if (item != null)
   {
      MessageBox.Show(item.Name);
   }
}

1 Ответ

1 голос
/ 23 июня 2011

вы добавляете обработчик для события UIElement.MouseLeftButtonUpEvent (как Path наследует его оттуда) на Canvas

theNestingCanvas.AddHandler(UIElement.MouseLeftButtonUpEvent , new RoutedEventHandler(target));

private void handler(object asd, RoutedEventArgs e)
{
    Path p = e.OriginalSource as Path;
    if (p != null)
    {
        //do whatever
    }
    e.Handled = true;
}

таким образом вы перехватываете все всплывающие события UIElement.MouseLeftButtonUp элементов внутри холста, которые еще не обработаны где-то еще ...

конечно, вы также можете добавить обработчик для события Path.MouseLeftButtonUpEvent, но после того, как спросите себя, почему вы ловите также события MouseUp других вложенных элементов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...