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