Я работаю над приложением WPF MVVM.У него есть собственный класс холста, наследуемый от Canvas.Есть окно с одним из этих пользовательских холстов (с использованием XAML), и его цвет фона установлен как прозрачный.Графика рисуется на Canvas с помощью DrawingVisuals для рисования примитивных фигур и добавления их в качестве визуальных дочерних элементов в визуальное дерево.Это работает и отображает мои фигуры на экране.
Я добавил событие мыши в Canvas в коде окна позади.Это срабатывает, когда я щелкаю в любом месте холста, кроме линии нарисованного изображения или цветной области заполненной фигуры.Для ясности:
- Если я щелкаю за пределами нарисованной фигуры, т.е. на фоне холста, она срабатывает.
- Если есть незаполненный прямоугольник, и я нажимаю на внутреннюю пустую областьтогда мышь поднимается.
- Если я щелкаю на границе прямоугольника, это не так.
- Если я щелкаю внутри прямоугольника с заливкой, это не так.
Начиная с http://msdn.microsoft.com/en-us/library/ms742254.aspx#providing_hit_testing_support кажется, что это должно работать, хотя я использую событие Canvas MouseUp, поскольку оно не имеет события MouseLeftButtonUp.В примере с MS они не используют Canvas, а говорят о «главном контейнере», но я не уверен, что это актуально.
Как я могу получить события, которые будут срабатывать при нажатии на DrawingVisual?Почему событие прерывается при нажатии внутри нарисованной области, но не за ее пределами?
Спасибо