【发布时间】:2012-04-03 08:50:57
【问题描述】:
我正在开发 WPF MVVM 应用程序。它有一个继承自 Canvas 的自定义画布类。有一个窗口放置了这些自定义画布之一(使用 XAML),并且它的背景颜色设置为透明。使用 DrawingVisuals 将图形绘制到 Canvas 以绘制原始形状并将它们作为 Visual 子级添加到 Visual 树中。这工作并将我的形状呈现到屏幕上。
我在后面的 Window 代码中向 Canvas 添加了一个鼠标向上事件。当我单击画布上的任何位置时触发,除了绘制的视觉线条或填充形状的彩色区域。明确一点:
- 如果我在绘制的形状之外单击,即在 它触发的画布。
- 如果有一个未填充的矩形,我点击里面的空白 区域,然后鼠标向上触发。
- 如果我点击矩形的边界线,它不会。
- 如果我在填充的矩形内单击它不会。
来自http://msdn.microsoft.com/en-us/library/ms742254.aspx#providing_hit_testing_support 尽管我使用的是 Canvas MouseUp 事件,但它似乎应该可以工作,因为它没有 MouseLeftButtonUp 事件。在 MS 示例中,他们不使用 Canvas,而是谈论“主机容器”,但我不确定这是否相关。
如何在单击 DrawingVisual 时触发事件?为什么在绘制区域内单击而不是在其外部单击时会抑制事件?
谢谢
【问题讨论】:
标签: .net wpf mvvm mouseevent