我们的一位客户报告说,当他们点击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";
}