动态生成的MenuFlyout事件失败

时间:2017-10-31 15:06:17

标签: c# uwp

我们的一位客户报告说,当他们点击MenuFlyout项目时,事件未发生。起初我不相信,然后他发了一个视频。然后我们设法在Windows 10 1703和1709的虚拟机安装上重现该问题。

场景是在代码中动态构建MenuFlyout的时候。在XAML中定义的MenuFlyouts工作正常。

此事件会创建一个MenuFlyout,并在单击该按钮时显示它。当在真实系统(至少大多数系统)上使用时,菜单工作正常。将其安装在VM(Hyper-V Windows 1709)上,然后从VM控制台或RDP使用它。单击时,MenuItem似乎不会调用该事件。它会显示已定义的项目,并在单击项目时从屏幕中清除菜单。事件中似乎没有代码运行。

然而,报告此问题的客户未使用VM。他的系统是HP-Envy PC h8-1437c。与我们在VM上看到的症状完全相同。我确实有一个可以提供的完整示例项目来重现问题。在VM上运行但不在本地系统上运行时。

******* XAML Declaration *************
    <FlyoutBase.AttachedFlyout>
        <MenuFlyout x:Name="DynamicMenuFlyout" />
    </FlyoutBase.AttachedFlyout>
*******************************************
        private void btnDynamic_Tapped(object sender, TappedRoutedEventArgs e)
        {
            DynamicMenuFlyout.Items.Clear();

            MenuFlyoutItem dynamic1 = new MenuFlyoutItem();
            dynamic1.Tapped += DynamicItem1_Tapped;
            dynamic1.Text = "Dynamic Item 1";
            DynamicMenuFlyout.Items.Add(dynamic1);

            MenuFlyoutItem dynamic2 = new MenuFlyoutItem();
            dynamic2.Tapped += DynamicItem2_Tapped;
            dynamic2.Text = "Dynamic Item 2";
            DynamicMenuFlyout.Items.Add(dynamic2);

            MenuFlyoutItem dynamic3= new MenuFlyoutItem();
            dynamic3.Tapped += DynamicItem3_Tapped;
            dynamic3.Text = "Dynamic Item 3";
            DynamicMenuFlyout.Items.Add(dynamic3);

            DynamicMenuFlyout.Placement = Windows.UI.Xaml.Controls.Primitives.FlyoutPlacementMode.Bottom;
            DynamicMenuFlyout.ShowAt(DynamicMenuButton);
        }
        private void DynamicItem3_Tapped(object sender, TappedRoutedEventArgs e)
        {
            TextLog.Text += "Dynamic Item 3 clicked.\r\n";
        }

        private void DynamicItem2_Tapped(object sender, TappedRoutedEventArgs e)
        {
            TextLog.Text += "Dynamic Item 2 clicked.\r\n";
        }

        private void DynamicItem1_Tapped(object sender, TappedRoutedEventArgs e)
        {
            TextLog.Text += "Dynamic Item 1 clicked.\r\n";
        }

0 个答案:

没有答案