我有两个按钮,点击后显示弹出窗口。我像XAML UI基础示例中所演示的那样显示它们:
private void ButtonTapped(object sender, TappedRoutedEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if (element != null)
{
FlyoutBase.ShowAttachedFlyout(element);
}
}
我的问题是,如果按钮1的弹出菜单已经打开,下一次点击屏幕会关闭弹出菜单。这很好,但如果下一次点击发生在按钮2上,我希望按钮的点击事件被触发并打开它的弹出菜单。相反,该按钮根本没有注册点击事件,并关闭了按钮1的弹出菜单。
这导致需要点击两次-一次用于关闭按钮1的弹出菜单,第二次用于显示按钮2的弹出菜单。
换句话说:
当前流程:
1. 点击按钮1 2. 按钮1的弹出菜单被打开 3. 点击按钮2 4. 按钮1的弹出菜单关闭,(按钮2或页面都没有注册点击事件) 5. 再次点击按钮2 6. 现在按钮2的弹出菜单被打开
我想要的是:
1. 点击按钮1 2. 按钮1的弹出菜单被打开 3. 点击按钮2 4. 按钮1的弹出菜单关闭,按钮2的弹出菜单打开。
如何做到这一点?我尝试拦截页面的Tapped事件,但当弹出菜单打开时,它似乎会拦截Tapped事件,以便用于弹出菜单的轻松解除。
覆盖Flyout的样式或FlyoutPresenterStyle能帮我吗?或者以更MVVM-ish的方式打开弹出菜单,这将允许我更精细地控制如何打开/关闭弹出菜单?
我不确定如何解决这个问题!