【发布时间】:2016-02-03 20:32:54
【问题描述】:
我有两个按钮在单击时显示Flyouts。我以与XAML UI Basics sample 中演示的方式相同的方式显示它们:
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 的弹出按钮已关闭,(按钮 2,Page 也不注册点击)
- 点击按钮 2
- 现在按钮 2 的弹出按钮已打开
我在寻找什么:
- 点击按钮 1
- 按钮 1 的弹出窗口已打开
- 点击按钮 2
- 按钮 1 的弹出按钮关闭,按钮 2 的弹出按钮打开。
我该怎么做?我已经尝试拦截页面的 Tapped 事件,但是当弹出窗口打开时,它似乎拦截了 Tapped 事件,因此它可以用于 Flyout 的灯光关闭
覆盖 Flyout 的样式或 FlyoutPresenterStyle 对我有帮助吗?或者也许以更类似于 MVVM 的方式打开 Flyout,这样我可以更好地控制 Flyout 的打开/关闭方式?
我不知道如何解决这个问题!
【问题讨论】:
-
您找到解决方案了吗?将 MenuFlyout 用作上下文菜单时,我也遇到了同样的问题。
-
不,还没有解决方案。我可能会尝试用弹出窗口替换 Flyout,看看我是否可以更好地控制解雇。
标签: c# xaml win-universal-app uwp