簡體   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