C# 禁用交叉幻灯片选择列表视图

C# 禁用交叉幻灯片选择列表视图,c#,xaml,listview,windows-runtime,winrt-xaml,C#,Xaml,Listview,Windows Runtime,Winrt Xaml,我想禁用ListView中项目的交叉幻灯片选择行为。我知道属性IsSwipeEnabled=“False”,但是我仍然希望允许用户将项目拖放到另一个网格中。我还尝试用以下代码捕获操纵开始/完成的事件 MyListView.ManipulationMode = ManipulationModes.TranslateRailsX; MyListView.ManipulationStarted += OnManipulationStarted; MyListView.ManipulationCompl

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

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

两个处理程序中都捕获了相应的事件,但是我不知道应该执行哪些操作来禁用选择。我尝试了与禁用右键单击类似的方法,将
RoutedEvents.Handled
设置为
true
,但这并不能阻止选择的发生。是否有一种干净的方法来处理此事件并禁用选择

我可以想出两件事来试试

  • 处理
    SelectionChanged
    事件并取消选择所选内容,同时允许拖放正常工作

  • 执行上述操作+禁用滑动选择并手动处理拖放-设置MyListView.ManufactionMode=ManufactionModes.TranslateRailsX | ManufactionModes.System,处理操作事件以启动和处理拖放输入,当您决定从平移/滚动切换到拖放交互时,调用拖动的项目容器,在装饰器层中呈现一个拖动的项目指示器(只是
    列表视图
    顶部的一个面板,其中一些元素附着在手指上),然后在拖放目标元素上处理拖放


  • 所以您已经设置了
    IsSwipeEnabled=“False”
    ,但仍然进行选择?或者您的意思是,如果要启用拖放,则无法设置该属性?该属性当前设置为
    True
    ,以支持拖放。不幸的是,这也允许启用交叉幻灯片的选择操作。将属性设置为
    False
    不允许拖放,但会禁用交叉幻灯片选择。感谢您的建议。我希望有一个更干净的方法来禁用此功能,但这似乎是唯一的方法。我不喜欢修改
    SelectionChanged
    事件并删除项目的一点是,我必须确定在此之前的事件是来自拖放还是交叉幻灯片或项目单击。此外,当交叉幻灯片项目仍处于按下状态时,用户仍将看到应用的选择样式。可能可以通过重新排序
    ListViewItems
    禁用选择样式。。。但不确定是否要禁用交互。您是否绝对确定内置拖放需要
    IsSwipeEnabled
    ?我将进一步了解
    ListViewItems
    的样式属性,但是现在我看不到在选择阈值内按下选择时的特定属性。可能有一种方法可以禁用
    IsSwipeEnabled
    并仍然允许拖放(可能是处理操纵事件),但我觉得我必须为几乎按照我需要的方式实现的东西添加更多的代码。再次感谢你的帮助!你不需要属性。您只需要编辑视觉状态。