繁体   English   中英

如何访问 WinUi3 教学提示的指针事件?

[英]How do I access pointer events for WinUi3 TeachingTips?

在我的应用程序中,当指针悬停在某些控件上时会出现教学提示,当指针离开这些控件时会消失(我将这些称为“触发控件”)。 这是使用触发控件的PointerEnteredPointerExited事件实现的。

教学提示的Target不是触发控件,这意味着教学提示有时可以覆盖触发控件。 发生这种情况时,触发控件的PointerExited事件被触发,隐藏了 TeachingTip。 这样循环,导致教学提示闪烁。

我尝试了两种方法来阻止这种情况。

首先,我尝试使用 TeachingTip 的指针事件来阻止它在指针超过它时关闭,但是似乎我需要使用教学提示内容的 Pointer 事件来实现这一点,但无法弄清楚如何访问内容。 我只使用 TeachingTip 的TitleSubtitle属性来设置内容,在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM