WPF:防止工具提示更改组件的鼠标进入/离开事件行为

时间:2013-02-19 11:37:50

标签: wpf

我有一个WPF用户控件,其中有两个自定义控件。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="65" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <MyControl x:Name="leftControl" Grid.Column="0" />
    <MyControl x:Name="rightControl" Grid.Column="2" />
</Grid>

自定义控件会对鼠标输入和鼠标离开事件做出反应。但是,他们也有工具提示。左侧组件明确位于右侧组件上方,以便在右侧组件进入右侧组件区域时不允许右侧组件隐藏工具提示。

我现在的问题:工具提示似乎通过自己的方式扩展左侧组件的范围。当显示的工具提示覆盖了右侧控制区域的一部分并且我将鼠标悬停在右侧控件上时,我进入两个进入/离开事件,就好像我进入左侧控件一进入工具提示所在的区域在此之前,仍然徘徊在正确的控制之下。

如何在提示鼠标进入或离开时告诉WPF忽略工具提示区域?

一些截图说明:

  1. 将鼠标悬停在左侧组件上,工具提示部分覆盖右侧组件的区域 1. Hovering over the left component with a tooltip partly covering the area of the right component:

  2. 将鼠标悬停在右侧组件上 2. Hovering over the right component

  3. 将鼠标悬停在工具提示结束处的右侧组件上。已提出输入/离开事件。添加鼠标光标以显示鼠标光标位置。 3. Hovering over the right component at the point where the tooltip ends. Enter/Leave events have been raised. Mouse cursor added for illustration of mouse cursor position

  4. 谢谢!

1 个答案:

答案 0 :(得分:2)

可以使用TooltipA tooltip or something similar move with cursor in wpf

只需创建一个相对于鼠标移动的Popup。离开控件时隐藏Popup。这是您的问题的一个很好的替代方案。您可能希望调整显示它的位置(即,如果它到达右边缘,则它会移动到鼠标的左侧)。我知道这不是一个直接的答案,但它是一个解决方案。 :)