我想禁用ListView中项目的交叉幻灯片选择行为。我知道属性IsSwipeEnabled="False"
但是我仍然希望允许用户将项目拖放到另一个网格中。我还尝试使用以下代码捕获Manipulation已启动/已完成事件。
MyListView.ManipulationMode = ManipulationModes.TranslateRailsX;
MyListView.ManipulationStarted += OnManipulationStarted;
MyListView.ManipulationCompleted += OnManipulationCompleted;
两个处理程序都会捕获相应的事件,但是我不知道应该采取什么操作来禁止选择发生。我尝试了一种类似的方法来禁用右键单击,我将RoutedEvents.Handled
设置为true
,但这并不妨碍选择的发生。是否有一种干净的方法来处理此事件并禁用选择发生?
答案 0 :(得分:1)
我可以想到两件事要尝试
处理SelectionChanged
个事件并取消选择任何已选中的内容,否则允许拖拽&自然而然地工作。
执行以上操作+禁用滑动选择并处理拖动和放大手动删除 - 设置MyListView.ManipulationMode = ManipulationModes.TranslateRailsX | ManipulationModes.System
,处理操作事件以启动和处理拖动&当您决定从平移/滚动切换到拖放交互时,在拖动项目容器上调用CancelDirectManipulations()
,在装饰图层中呈现拖动的项目指示符(仅在{{1}上方的面板上一些元素附在你的手指上),然后处理掉落目标元素。