用滑动手势关闭 HamburgerMenu

Close HamburgerMenu with slide gesture

我正在尝试对 open/close 和 hamburguer menu control 执行滑动手势,但我无法使用 1.5.1 版控件关闭菜单。对于 1.4.1 版,我这样关闭菜单:

var paneGrid = HamburgerMenu.FindDescendantByName("PaneGrid") as Grid; 
paneGrid.ManipulationMode = ManipulationModes.TranslateX; 
paneGrid.ManipulationCompleted += OnPaneGridManipulationCompleted;

private void OnPaneGridManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e) { 
    if (e.Cumulative.Translation.X < -50) { 
        HamburgerMenu.IsPaneOpen = false; 
    } 
}

但是在 1.5.1 版本中,列表视图会占用控件中的所有 space,而 "OnPaneGridManipulationCompleted" 不会被解雇...请问有什么想法吗?

您可以尝试在 ListView 的内部 ScrollViewer 上将 HorizontalScrollModeVerticalScrollMode 都设置为 Disabled,让触摸输入绕过它。

因为 HorizontalScrollMode 的默认值已经是 Disabled。您只需要手动设置 VerticalScrollMode 如下

if (HamburgerMenuControl.FindDescendantByName("ButtonsListView") is ListView listView)
{
    ScrollViewer.SetVerticalScrollMode(listView, ScrollMode.Disabled);
}

副作用是您无法再垂直滚动 ListView。但通常你不会想要那个(糟糕的设计)。

您可能也对我的 感兴趣。 :)