用滑动手势关闭 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
上将 HorizontalScrollMode
和 VerticalScrollMode
都设置为 Disabled
,让触摸输入绕过它。
因为 HorizontalScrollMode
的默认值已经是 Disabled
。您只需要手动设置 VerticalScrollMode
如下
if (HamburgerMenuControl.FindDescendantByName("ButtonsListView") is ListView listView)
{
ScrollViewer.SetVerticalScrollMode(listView, ScrollMode.Disabled);
}
副作用是您无法再垂直滚动 ListView
。但通常你不会想要那个(糟糕的设计)。
您可能也对我的 感兴趣。 :)
我正在尝试对 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
上将 HorizontalScrollMode
和 VerticalScrollMode
都设置为 Disabled
,让触摸输入绕过它。
因为 HorizontalScrollMode
的默认值已经是 Disabled
。您只需要手动设置 VerticalScrollMode
如下
if (HamburgerMenuControl.FindDescendantByName("ButtonsListView") is ListView listView)
{
ScrollViewer.SetVerticalScrollMode(listView, ScrollMode.Disabled);
}
副作用是您无法再垂直滚动 ListView
。但通常你不会想要那个(糟糕的设计)。
您可能也对我的