Какое событие вызывается, когда указатель мыши входит в элемент MenuflyoutSubItem? - PullRequest
0 голосов
/ 09 мая 2018

PointerEntered запускается, когда указатель мыши входит в MenuFlyoutItem, но не когда он входит в MenuFlyoutSubItem. Какое событие вызывается, когда указатель мыши входит в элемент MenuflyoutSubItem? Я хочу захватить свойство text элемента MenuflyoutSubItem в обработчике событий, когда указатель мыши вводит его. (Причина, по которой я не могу положиться на событие касания, заключается в том, что даже простое наведение курсора на MenuFlyoutSubItem открывает содержащиеся в нем пункты меню.) Вот код:

public DynamicMenuTestPage()
    {
        InitializeComponent();

        for (int i = 0; i < 5; i++)
        {
            MenuFlyoutSubItem myItem = new MenuFlyoutSubItem();
            myItem.Text = "Item" + i;
            myItem.PointerEntered += MyItem_PointerEntered;        
            MyMenu.Items.Add(myItem);
            for (int j = 0; j < 4; j++)
            {
                MenuFlyoutItem mySubItem = new MenuFlyoutItem();
                mySubItem.Text = "SubItem" + j;
                mySubItem.PointerEntered += mySubItem_PointerEntered;
                myItem.Items.Add(mySubItem);
            }
        }
    }

    private void MyItem_PointerEntered(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
    {
        // This does not work.  It is not triggered when the mouse pointer enters the menu flyout subitem.
        MenuFlyoutSubItem test = sender as MenuFlyoutSubItem;
        var menuFlyoutSubItemText = test.Text;

    }

    private void mySubItem_PointerEntered(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
    {   //This works. It is triggered when the mouse pointer enters the menu flyout item.
        MenuFlyoutItem test = sender as MenuFlyoutItem;
        var menuFlyoutItemText = test.Text;

    }

Вот скриншот меню. Когда я наведу курсор на Item0, обведенный красным, открывается подменю. Какое событие позволит мне захватить текст "Item0"?

Menu Screenshot

1 Ответ

0 голосов
/ 11 мая 2018

Кажется, MenuFlyoutSubItem не запускает PointerEntered RoutedEvents , вы можете подключить обработчик событий для этого RoutedEvents .

myItem.AddHandler(PointerEnteredEvent, new PointerEventHandler(PointEnterHandler), true);

Итак, ваш код будет таким:

public MainPage()
{
    this.InitializeComponent();
    for (int i = 0; i < 5; i++)
    {
        MenuFlyoutSubItem myItem = new MenuFlyoutSubItem();
        myItem.Text = "Item" + i;
        myItem.AddHandler(PointerEnteredEvent, new PointerEventHandler(PointEnterHandler), true);
        MyMenu.Items.Add(myItem);
        for (int j = 0; j < 4; j++)
        {
            MenuFlyoutItem mySubItem = new MenuFlyoutItem();
            mySubItem.Text = "SubItem" + j;
            mySubItem.PointerEntered += mySubItem_PointerEntered;
            myItem.Items.Add(mySubItem);
        }
    }
}

private void PointEnterHandler(object sender, PointerRoutedEventArgs e)
{
    MenuFlyoutSubItem test = sender as MenuFlyoutSubItem;
    var menuFlyoutSubItemText = test.Text;
}

private void mySubItem_PointerEntered(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{   //This works. It is triggered when the mouse pointer enters the menu flyout item.
    MenuFlyoutItem test = sender as MenuFlyoutItem;
    var menuFlyoutItemText = test.Text;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...