我有我的XAML代码:
<Canvas x:Name="mainCanvas" Width="200" Height="150" Background="LightGray"
MouseLeftButtonUp="mainCanvas_MouseLeftButtonUp"
MouseMove="mainCanvas_MouseMove">
<Canvas x:Name="topCanvas" Width="200" Height="100" Background="LightBlue"
MouseLeftButtonUp="topCanvas_MouseLeftButtonUp"
MouseMove="topCanvas_MouseMove">
</Canvas>
</Canvas>
及其背后的代码:
private void topCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("topCanvas_MouseLeftButtonUp");
e.Handled = true; // This can prevent routing to the mainCanvas
}
private void mainCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("mainCanvas_MouseLeftButtonUp");
}
private void topCanvas_MouseMove(object sender, MouseEventArgs e)
{
Debug.WriteLine("topCanvas_MouseMove");
// How to prevent routing to the mainCanvas?
// e.Handled = true does NOT exist in MouseEventArgs
}
private void mainCanvas_MouseMove(object sender, MouseEventArgs e)
{
Debug.WriteLine("mainCanvas_MouseMove");
}
我的问题已在评论中。
如何防止将MouseMove事件从topCanvas(子画布)路由到mainCanvas(父画布)?
感谢。
彼得
答案 0 :(得分:0)
您可以尝试比较mainCanvas的MouseMove事件中的e.OriginalSource,如果它不是来自mainCanvas,则退出Sub。
private void mainCanvas_MouseMove(object sender, MouseEventArgs e)
{
if (sender != e.OriginalSource)
return;
}
更详细地回复您的评论。根据{{3}}事件MSDN链接。
继承MouseMove的控件可以为事件提供处理 通过重写OnMouseMove,它充当所有实例的处理程序 方法。与直接处理事件一样,没有Handled 属性可用,因此OnMouseMove无法以这种方式实现 它抑制了通过Handled进一步处理事件 技术
以及此UIElement.MouseMove个州:
此事件为Mouse.MouseMove附加事件创建别名 这个班级
这使我们看到link上的这个链接。
可扩展应用程序标记语言(XAML)定义了一种语言 组件和事件类型称为附加事件。的概念 附加事件使您可以为特定事件添加处理程序 到任意元素而不是实际的元素 定义或继承事件。在这种情况下,既不是对象 可能会引发事件或目标处理实例 定义或“拥有”该事件。
所以我看到它,你唯一的选择就是围绕它进行编码。
答案 1 :(得分:0)
尝试设置Canvas的IsHitTestVisible属性。使用该属性设置相应的鼠标事件将“通过”您的控件或将被它捕获。
希望这就是你所需要的。
答案 2 :(得分:-2)
该功能称为“事件冒泡”。您可以使用以下代码停止它:
jQuery的: event.stopPropagation(); 参考:http://api.jquery.com/event.stopPropagation/
您还可以尝试以下代码: e.stopPropagation(); //防止事件冒泡 e.preventDefault(); //然后取消事件(如果它可以取消)
Ref: http://stackoverflow.com/questions/1967537/how-to-stop-event-bubbling-with-jquery-live
谢谢, Ravi Verma