Я использую TeachingTip UWP, и мне нужно знать, когда указатель находится над элементом управления.
Вот как я создаю и вставляю подсказку Teaching:
var teachingTip = new TeachingTip
{
IsOpen = true,
Title = "hello",
Subtitle = "world"
};
var mainPage = (Window.Current.Content as Frame)?.Content as MainPage;
var content = (Windows.UI.Xaml.Controls.Canvas)mainPage.Content;
content.Children.Add(teachingTip);
Я попробовал это, но не получил никакого события:
teachingTip.PointerEntered += TipPointerEntered;
teachingTip.PointerExited += TipPointerExited;
...
Я также попробовал это, но это не имело никакого значения:
teachingTip.AddHandler(UIElement.PointerEnteredEvent, new PointerEventHandler(TipPointerEntered), true);
Тогда я прочитал here this:
Если вы хотите обрабатывать перенаправленные события из всплывающего окна или всплывающей подсказки, поместите обработчики в указанные c элементы пользовательского интерфейса>, которые находятся внутри всплывающего окна или всплывающей подсказки, а не Сами элементы всплывающих окон или всплывающих подсказок.
Так что я думаю, что TeachingTip ведет себя так же. Но я не мог понять, как получить доступ к дочерним элементам TeachingTip.
Поэтому я попробовал другой подход, возможно, смог бы отследить указатель, когда подсказка открыта, и провести некоторое тестирование на элемент управления. Поэтому я попробовал это:
var mainPage = (Window.Current.Content as Frame)?.Content as MainPage;
mainPage.AddHandler(UIElement.PointerMovedEvent, new PointerEventHandler(PointerMoved), true);
void PointerMoved(object sender, PointerRoutedEventArgs e)
{
var page = (Window.Current.Content as Frame)?.Content as MainPage;
var currPoint = e.GetCurrentPoint(page);
var elements = VisualTreeHelper.FindElementsInHostCoordinates(new Windows.Foundation.Point(currPoint.Position.X, currPoint.Position.Y), teachingTip);
foreach (UIElement element in elements)
{
// Eureka! found an element
}
}
но нет эврика ... если кто-то может помочь ...