You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP技术问询:如何将ListView多选条目数据存入数组?

在UWP中收集ListView的多个选中项数据

当然有办法啦!在UWP里获取ListView的多个选中项其实很简单,我给你两种常用的实现方式,根据你的开发模式选就行:

方法一:后台代码直接获取(适合代码后置开发)

首先你得确保你的ListView开启了多选功能——在XAML里把SelectionMode属性设为Multiple或者Extended(默认是Single只能单选):

<ListView x:Name="MyListView" SelectionMode="Multiple">
    <!-- 你的ItemTemplate和ItemsSource配置 -->
</ListView>

之后,当你需要获取选中项时(比如用户点击了一个“确认”按钮),直接用ListView的SelectedItems属性就行。这个属性返回的是IList<object>,你只需要把它转换成你数据项的具体类型,再转成数组或List:

// 假设你的数据项类型是自定义的MyItem类
private void ConfirmButton_Click(object sender, RoutedEventArgs e)
{
    // 转成数组
    MyItem[] selectedArray = MyListView.SelectedItems.Cast<MyItem>().ToArray();
    // 或者转成List
    List<MyItem> selectedList = MyListView.SelectedItems.Cast<MyItem>().ToList();
    
    // 接下来就可以用这个数组/List做你需要的操作啦
}

方法二:MVVM模式下绑定选中项(适合数据驱动开发)

如果用MVVM模式不想直接操作UI控件,可以把选中项绑定到ViewModel的集合里。UWP的SelectedItems支持双向绑定,先准备好ViewModel:

ViewModel代码示例

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;

public class MainViewModel : INotifyPropertyChanged
{
    // 用于存储选中项的集合
    private ObservableCollection<MyItem> _selectedItems;
    public ObservableCollection<MyItem> SelectedItems
    {
        get => _selectedItems;
        set
        {
            _selectedItems = value;
            OnPropertyChanged();
        }
    }

    // ListView的数据源
    public ObservableCollection<MyItem> ItemList { get; set; }

    public MainViewModel()
    {
        ItemList = new ObservableCollection<MyItem>();
        SelectedItems = new ObservableCollection<MyItem>();
        // 这里可以初始化ItemList的测试数据
    }

    // INotifyPropertyChanged接口实现
    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

XAML绑定配置

<ListView ItemsSource="{Binding ItemList}"
          SelectionMode="Multiple"
          SelectedItems="{Binding SelectedItems, Mode=TwoWay}">
    <!-- 你的ItemTemplate -->
</ListView>

这样一来,用户选中或取消选中项时,ViewModel里的SelectedItems集合会自动更新。你需要用的时候直接转成数组就行:

var selectedArray = SelectedItems.ToArray();

注意事项

  • 一定要设置SelectionMode为Multiple或Extended,否则SelectedItems只会包含最多一个项。
  • 如果你用的是自定义数据模型,转换类型时要确保Cast<T>()的类型和你的数据项一致,避免类型转换异常。
  • MVVM模式下,记得要给页面设置ViewModel作为DataContext哦。

内容的提问来源于stack exchange,提问作者Cruwiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:09:05