【发布时间】:2019-03-16 05:47:55
【问题描述】:
在我的 UWP 应用程序中,我的主窗口中有一个列表视图,我有一个辅助窗口。我的列表视图中的每个列表视图项都是Grid,我为网格设置了Grid.ContextFlyout。 ContextFlyout 包含一个 MenuFlyout 和 4 个 MenuFlyoutItem。
我打开我的应用程序,在主窗口列表视图中,我右键单击一个项目。我看到 ContextFlyout 打开,EventHandler<object> Opened 被触发。
现在,我打开应用程序的辅助窗口并关闭主窗口。我再次通过从开始菜单打开我的应用程序来打开我的应用程序的主窗口。
现在,如果我右键单击之前单击的列表视图中的同一项目,我可以看到 EventHandler<object> Opened 被触发,但上下文弹出窗口未在 UI 中打开。
此问题仅在上述情况下发生(1.打开应用程序,2.右键单击项目,3.打开辅助窗口,4.关闭主窗口,5.从开始再次打开应用程序的主窗口菜单,6.右键单击该项目)
下面是我的网格
<Grid
Name="RootGrid">
<Grid.ContextFlyout>
<MenuFlyout
x:Name="OptionsFlyout"
Opening="Flyout_Opening"
Opened="Flyout_Opened"
Closed="Flyout_Closed">
<MenuFlyoutItem Name="Item1"/>
<MenuFlyoutItem Name="Item2"/>
<MenuFlyoutItem Name="Item3"/>
<MenuFlyoutItem Name="Item4"/>
</MenuFlyout>
</Grid.ContextFlyout>
<TextBlock Text="MyGridItem"/>
</Grid>
在我的App.xaml.cs 中,我在OnLaunched 方法中使用下面的代码来恢复我的主窗口
protected override async void OnLaunched(LaunchActivatedEventArgs e)
{
Window.Current.Dispatcher.RunOnUIThread(async () =>
{
tryShow = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(ApplicationView.GetApplicationViewIdForWindow(CoreApplication.GetCurrentView().CoreWindow), ViewSizePreference.Default, e.CurrentlyShownApplicationViewId, ViewSizePreference.Default);
});
}
在打开/恢复之前关闭的主窗口时,我是否遗漏了任何内容?或者有什么办法可以解决这个问题?
以下是我为重现此问题而创建的示例应用程序的 github 链接。 UWP Grid Context Menu
【问题讨论】:
-
@XavierXie-MSFT 我已经使用示例应用程序的 github 链接编辑了我的问题,以重现此问题。