5

我有一个带有用户控件的画布。当工具提示被分配给用户控件或其子控件之一时,该工具提示不会显示(打开事件也不会被触发)。我没有明确禁用它们中的任何一个。

我在应用程序的其他地方放置了很多工具提示,它们都显示出来了,除了我创建的用户控件上的那些。

有任何想法吗?

层次结构大致如下:

<Grid>
 <Canvas>
  <UserControl>
   <Canvas>
    <Line/>
    <Rectangle/>
   </Canvas>
  </UserControl>
 </Canvas
</Grid>
4

3 回答 3

4

如果 Usercontrol 的背景为 x:Null,则鼠标事件将落入底层内容。您可以使用“透明”来确保鼠标事件转到用户控件。

这种行为不是用户控件独有的;这是所有 WPF 的一般行为。在您的示例中,假设您对子元素进行了填充,您应该能够将鼠标悬停在这些元素上,并查看您设置的工具提示。

于 2009-01-26T00:39:51.647 回答
2

我终于弄明白了。在我的画布上,我正在绘制指针线(水平和垂直以在网格上显示我所在的位置以及左侧/底部的值),事实证明,当执行命中测试时,它正在命中这些线并停止. 通过在所有不相关的几何体上将 IsHitTestVisible 设置为 false,我的工具提示现在可以正确显示。

我看到鼠标进入/离开事件的原因是因为在移动光标时,线条会拖到后面 1 帧,因此允许鼠标进入/离开但不能移动。

这解决了我的问题。

于 2009-02-01T21:20:46.877 回答
0

我最初在根画布中测试时遇到了这个问题,当背景为空时,我的矩形没有显示工具提示。但是,这并不能解决用户控件的问题。我为用户控件和其中的画布尝试了透明背景,内部画布内的矩形有黑色背景,但没有运气:工具提示不会打开。

我确实尝试在我的根画布上放置一个工具提示,它确实出现了,但没有出现在我的单个子用户控件或其内部画布/子控件上,即使它们有背景/填充集。

此外,放置一个 MouseEnter 事件表明它确实在鼠标进入内部画布时触发,但工具提示不会弹出。

于 2009-01-26T02:38:28.630 回答