[英]How do I access pointer events for WinUi3 TeachingTips?
在我的应用程序中,当指针悬停在某些控件上时会出现教学提示,当指针离开这些控件时会消失(我将这些称为“触发控件”)。 这是使用触发控件的PointerEntered
和PointerExited
事件实现的。
教学提示的Target
不是触发控件,这意味着教学提示有时可以覆盖触发控件。 发生这种情况时,触发控件的PointerExited
事件被触发,隐藏了 TeachingTip。 这样循环,导致教学提示闪烁。
我尝试了两种方法来阻止这种情况。
首先,我尝试使用 TeachingTip 的指针事件来阻止它在指针超过它时关闭,但是似乎我需要使用教学提示内容的 Pointer 事件来实现这一点,但无法弄清楚如何访问内容。 我只使用 TeachingTip 的Title
和Subtitle
属性来设置内容,在Loaded
事件期间, Content
属性是 null。 [编辑:这是错误的,请参阅下面的答案] 我没有应用自定义模板,因此无法使用此处描述的方法。
接下来,我尝试通过将IsHitTestVisible
设置为false
来将教学提示“不可见”设置为指针事件,但这不起作用。
请有人可以让我知道如何实现这一目标吗?
当我写这个问题时,我误解了模板是如何使用的, 这里的答案确实提供了一个解决方案:
internal class CustomTeachingTip : TeachingTip
{
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
if (GetTemplateChild("ContentRootGrid") is Grid rootGrid)
{
rootGrid.PointerEntered += (o, e) => DoStuff();
rootGrid.PointerExited += (o, e) => DoOtherStuff();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.