【发布时间】:2012-08-22 07:31:06
【问题描述】:
我有一条消息在边框内并显示在 MDI 客户区前面。因为它只是一条消息,所以我将它的 IsHitTestVisible 设置为 false。为方便起见,我还在其中包含了一个按钮,因此用户只需单击该按钮即可开始新图表。
但是,由于边框将其IsHitTestVisible 设置为False,它会缩短按钮的True 值,因此用户无法单击按钮。
也就是说,如何使控件对鼠标不可见,同时仍允许其子级之一接收鼠标事件?
截图如下:
我们希望带有文本的蓝色区域在命中测试中不可见,但我们希望按钮仍然可以被按下。想法? (是的,我已经知道将这两个项目堆叠在一个网格中,但这会影响布局。
【问题讨论】:
-
我认为你会更幸运地弄清楚如何使用
Grid来修复你的布局,其中两个控件相互堆叠,而不是找到一种设置IsHitTestVisible=true但允许命中的方法无论如何都要对子项目进行测试。你有什么样的布局? -
您可以覆盖 HitTestCore...来确定您的 UIElement 的点击行为(假设您已经创建了一个 UserControl)......但就像 Rachel 说的......使用 Grid 或不同的布局。
-
是的,我已经有了一个重量更轻的控件,称为 LayerPanel,它可以简单地将东西堆叠在一起。从网格中删除所有测量值等,这是众所周知的性能差。尽管如此,我还是讨厌必须对事物进行分层,因为当文本更改以进行本地化时,它会推动布局,现在您必须担心在未连接的事物前面对齐某些内容。不好玩。可行,但不好玩。