Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我怎样才能使IsMouseOver不在乎其他东西掩盖控件?_C#_Wpf_Mouseevent_Ismouseover - Fatal编程技术网

C# 我怎样才能使IsMouseOver不在乎其他东西掩盖控件?

C# 我怎样才能使IsMouseOver不在乎其他东西掩盖控件?,c#,wpf,mouseevent,ismouseover,C#,Wpf,Mouseevent,Ismouseover,我在WPF程序中经常使用IsMouseOver属性。不幸的是,我有来自视觉树的其他分支的其他视觉元素,它们有时会覆盖我的控件。当他们遮盖我的控件时,我的控件上的IsMouseOver将变为false,即使我的鼠标位于遮盖的控件上 我的控件怎么能有一个像IsMouseOver这样的属性,而不关心它是否在光标位置被覆盖?就像一个命中测试,它可以覆盖 我看了一下,但我认为我不能使用它,因为它基本上每次鼠标移动时都使用轮询。我认为这会大大降低我的程序的速度,因为我的可视化树非常广泛 请注意,覆盖控件的可

我在WPF程序中经常使用
IsMouseOver
属性。不幸的是,我有来自视觉树的其他分支的其他视觉元素,它们有时会覆盖我的控件。当他们遮盖我的控件时,我的控件上的
IsMouseOver
将变为false,即使我的鼠标位于遮盖的控件上

我的控件怎么能有一个像
IsMouseOver
这样的属性,而不关心它是否在光标位置被覆盖?就像一个命中测试,它可以覆盖

我看了一下,但我认为我不能使用它,因为它基本上每次鼠标移动时都使用轮询。我认为这会大大降低我的程序的速度,因为我的可视化树非常广泛

请注意,覆盖控件的可视元素不是控件的子元素


Edit:对正在进行覆盖的元素将
ishitestvisible
设置为false将是一个非常好的解决方案,但当我这样做时,覆盖元素根本不会与鼠标交互。我需要覆盖和覆盖元素对鼠标做出反应

通过设置
ishitestvisible=“False”



覆盖控件的“其他东西”是否应该关心鼠标?如果有什么东西覆盖控件,则鼠标无法覆盖控件,因为它覆盖了其他控件。@sa_ddam213隐喻:我的手机放在桌子上。因此,我的手机在我的桌子和地板上。把鼠标想象成你的眼睛,你通过手机看不到桌子,你也看不到桌子上的地板,听起来你需要想一些其他的事情,而不是关于事件的思考,一次只有一件东西可以直接放在鼠标下,我可能需要使用
IsMouseOver
事件以外的东西。不过我想用类似的东西。当鼠标悬停在我的许多控件上时,它们的外观应该会改变。不幸的是,像大型透明覆盖层和点选线装饰条这样的东西有时会掩盖我控件的一部分。当鼠标悬停在这些对象上时,
IsMouseOver
将变为false,并且基础控件将更改为看起来鼠标未悬停在其上。这看起来很糟糕,令人困惑。这是我最初写的问题的一个很好的解决方案。不幸的是,这对我不起作用。我已经编辑了我的原始问题,包括为什么我认为它不适合我的描述。
<Grid>
  <Control1/>

  <!-- Control2 will visually "cover" Control1, but mouse events will "pass thru" To Control1 -->
  <Control2 IsHitTestVisible="False"/>
</Grid>