【发布时间】:2019-09-04 08:26:06
【问题描述】:
我在视图模型中有许多按钮运行命令的视图。
当我在顶部显示设置弹出窗口,然后通过触摸外部将其关闭时,触摸事件还会在我的触摸点下方的按钮上引发单击事件。我不希望那个按钮点击发生。当弹出窗口打开时,一些按钮仍然可见。
我使用StaysOpen=True 并自己管理弹出窗口的关闭,因为由于某种原因,当我触摸外部时弹出窗口不会自行关闭(鼠标没问题)。关闭弹窗的代码如下:-
private void Grid_PreviewTouchDown(object sender, TouchEventArgs e)
{
var tp = e.GetTouchPoint(optionsPopupChild).Position;
if (optionsPopup.IsOpen && !((tp.X >= 0 && tp.X < optionsPopupChild.ActualWidth) && (tp.Y >= 0 && tp.Y < optionsPopupChild.ActualHeight)))
{
optionsPopup.IsOpen = false;
e.Handled = true;
}
}
我也尝试在PreviewTouchUp 处理程序中类似地设置e.Handled = true,但单击事件仍会通过按钮到达导致命令运行的按钮。我的印象是设置e.Handled = true 应该防止鼠标提升触摸。
帮助表示赞赏。
杰瑞
【问题讨论】: