用滑动手势关闭HamburgerMenu

时间:2017-08-29 10:48:08

标签: c# uwp windows-10-mobile windows-community-toolkit

我正在尝试实现一个幻灯片手势来打开/关闭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,listviews会占用控件中的所有空格,并且“OnPaneGridManipulationCompleted”不会被触发......有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试在HorizontalScrollMode内部VerticalScrollMode上设置DisabledListViewScrollViewer,让触摸输入绕过它。

由于HorizontalScrollMode的默认值已为Disabled。您只需手动设置VerticalScrollMode,如下所示

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

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

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