将IsHitTestVisible设置为false会影响wpf中的光标

时间:2017-12-07 06:46:47

标签: c# wpf cursor

我有一个网格。在里面,我有一些控制。

  

预期行为:

当网格中的一个控件发生鼠标按下时,我需要将光标更改为等待并需要阻止下一次命中直到特定时间,所以在MouseDown事件中设置光标等待IsHitTestVisible图片为false。但这没有按预期工作。

  

代码块

<Grid x:Name="Grid1" Grid.Row="1" Grid.Column="1" Cursor="{Binding CurrentCursor}">
  <Canvas x:Name="canvasElement" Width="{Binding ElementName=pupilGrid, Path=ActualWidth}" Height="{Binding ElementName=pupilGrid, Path=ActualHeight}" IsManipulationEnabled="True">
    <Image x:Name="pupilSource" Width="{Binding ElementName=pupilGrid, Path=ActualWidth}" Height="{Binding ElementName=pupilGrid, Path=ActualHeight}" Source="{Binding ImageSource}"   MouseDown="Source_MouseDown" IsHitTestVisible="{Binding CanHitAxis}"/>
    <controls:Control x:Name="targetControl" Width="30" Height="30" ClipToBounds="False" Canvas.Left="0" Canvas.Top="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
  </Canvas>
</Grid>
  

我得到的是什么:

在“Source_mousedown event”中我将当前光标设置为等待,IsHitTestVisible设置为false。但等待光标未设置为图像。如果我在意义上移除了图像的IsHitTestVisible属性,则等待光标也会应用于图像。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

如果为UIelement将 IsHitTestVisible 属性设置为false,它将不再响应鼠标输入,也不会触发与鼠标相关的事件。 随着IsHitTestVisible被设置为false,鼠标无法在窗口中看到你的UIElement。因此,网格的光标属性不起作用。

您可以使用 IsEnabled 属性来阻止特定时间的鼠标停用事件,而不是 IsHitTestVisible

我认为这个会解决你的问题。