禁用交叉幻灯片选择ListView

本文关键字:选择 ListView 幻灯片 | 更新日期: 2023-09-27 18:19:01

我想禁用ListView中项目的交叉滑动选择行为。我知道属性IsSwipeEnabled="False",但是我仍然希望允许用户将项目拖放到另一个网格中。我还尝试用以下代码捕获操纵开始/完成的事件。

MyListView.ManipulationMode = ManipulationModes.TranslateRailsX;
MyListView.ManipulationStarted += OnManipulationStarted;
MyListView.ManipulationCompleted += OnManipulationCompleted;

适当的事件被捕获在两个处理程序中,但是我不知道我应该做什么来禁用选择发生。我尝试了类似的方法来禁用右键单击,我将RoutedEvents.Handled设置为true,但这并不能阻止选择的发生。是否有一种干净的方法来处理此事件并禁用选择发生?

禁用交叉幻灯片选择ListView

我想到两件事可以尝试

  1. 处理SelectionChanged事件并取消选中的任何内容,否则允许拖动&

  2. 执行上述操作+禁用滑动选择和手柄拖动&手动拖放-设置MyListView.ManipulationMode = ManipulationModes.TranslateRailsX | ManipulationModes.System,处理操作事件启动和处理拖放&放置输入,当你决定从平移/滚动切换到拖放交互时,调用CancelDirectManipulations()对被拖动的项目容器,在装饰层中渲染一个被拖动的项目指示器(只是ListView顶部的一个面板,带有一些附加到你的手指上的元素),然后处理拖放目标元素。