通过设置IsHitTestVisible 属性值为false,可以使界面元素不响应鼠标,鼠标事件也不会被触发。
在下面的例子中有两个Label,我们将其中一个的IsHitTestVisible 属性设为false。
<StackPanel>
<Label Content="Mouse Sees Me" Background="AliceBlue" Margin="10"
MouseMove="Label_MouseMove_1"/>
<Label Content="Mouse Doesn't see Me" Background="Beige" Margin="10"
IsHitTestVisible="False"
MouseMove="Label_MouseMove_2"/>
</StackPanel>
我们给两个Label注册了鼠标事件,并在事件处理函数中打印鼠标的位置:
private void ReportMouse(string element, MouseEventArgs e)
{
Point p = e.GetPosition(null);
Console.WriteLine(string.Format("{0} sees mouse at ({1},{2})", element, p.X, p.Y));
}
private void Label_MouseMove_1(object sender, MouseEventArgs e)
{
ReportMouse("Label 1", e);
}
private void Label_MouseMove_2(object sender, MouseEventArgs e)
{
ReportMouse("Label 2", e);
}
当我们在两个Label上移动鼠标的时候,可以看到,只有鼠标在第一个Label(没有设置
IsHitTestVisible 为false)上的时候位置才会被打印。

***************************************************译者注*******************************************
将IsHitTestVisible 属性设置为false,可以禁止控件所有的鼠标交互。比如按钮的点击,或者想通过鼠标点击给控件设置输入焦点等等,这些都不起作用。但是仍然可以通过键盘Tab键将焦点移动到控件,然后进行操作。例如用Tab键将输入焦点移动到按钮上,按Enter键,响应按钮事件。
另外,如果将一个容器的IsHitTestVisible 属性设置为false,那么容器中所有的子控件都不参与点击测试(不响应鼠标的交互),即使你将子控件的IsHitTestVisible 属性设置为true。