• UWP Listview 多选


    最近在做一个项目的时候,用到了Listview,需要选择一个item,来进行删除。

    但是当开启了

    PullToRefreshListViewControl.IsMultiSelectCheckBoxEnabled = true;
    PullToRefreshListViewControl.SelectionMode = ListViewSelectionMode.Multiple;

    点击Item还是进入了Listview的Click事件。。。。。。

    这里我们就需要用到一个小技巧了,顶一个一个全局变量 bool bMultiSelect = false;

    最终效果

    在Click事件中,判断是不是多选即可。

    现在在xaml中定义三个button,实际工作不需要这么多,我这方便说明演示

    一个是开启多选模式,一个是取消多选模式,最后是删除事件

    <Button Content="MultiSelect" Click="MultiSelectClick"/>
    <Button Content="CancelMultiSelect" Click="CancelMultiSelectClick"/>
    <Button Content="DeleteSelected" Click="DeleteSelectedClick"/>

    对应的后台code

         private void MultiSelectClick(object sender, RoutedEventArgs e)
            {
                bMultiSelect = true;
                PullToRefreshListViewControl.IsMultiSelectCheckBoxEnabled = true;
                PullToRefreshListViewControl.SelectionMode = ListViewSelectionMode.Multiple;
            }
    
            private void CancelMultiSelectClick(object sender, RoutedEventArgs e)
            {
                bMultiSelect = false;
                PullToRefreshListViewControl.IsMultiSelectCheckBoxEnabled = false;
                PullToRefreshListViewControl.SelectionMode = ListViewSelectionMode.None;
            }
    
            private async void DeleteSelectedClick(object sender, RoutedEventArgs e)
            {
                if (PullToRefreshListViewControl.SelectedItems.Count == 0)
                {
                    Debug.WriteLine("No items selected");
                    return;
                }
    
                for (int i = PullToRefreshListViewControl.SelectedItems.Count - 1; i >= 0; i--)
                {
                    FaceSet fs = PullToRefreshListViewControl.SelectedItems[i] as FaceSet;
                    await FacePlusPlusHelper.DeletePersoninCloud(fs.FaceSetToken, fs.OuterId);
                    SampleItems.Remove(fs);
                }
    
                if (SampleItems.Count == 0)
                {
                    bMultiSelect = false;
                    PullToRefreshListViewControl.IsMultiSelectCheckBoxEnabled = false;
                    PullToRefreshListViewControl.SelectionMode = ListViewSelectionMode.None;
                }
            }

    然后在Listview的点击事件中屏蔽一下即可

    private async void PullToRefreshListViewControl_ItemClick(object sender, ItemClickEventArgs e)
    {
      if(
    bMultiSelect)
        return;

      //然后这里写单击item的代码咯

    }

    o, 对了,PullToRefreshListViewControl是Listview控件。

  • 相关阅读:
    iscroll 使用及遇到的问题
    移动端web页面如何适配
    里面的div怎么撑开外面的div让高度自适应
    JavaScript 获取当前时间戳
    css样式 浏览器的读取顺序
    mouseover和mouseenter的区别
    【转】移动端input输入placeholder垂直不居中
    一张png图片 上面有多个图标,如何用CSS准确的知道其中某个图片的坐标
    JVM05——JVM类加载机制知多少
    【Java实用工具】——使用oshi获取主机信息
  • 原文地址:https://www.cnblogs.com/hupo376787/p/7679434.html
Copyright © 2020-2023  润新知