以下是一个利用多选框的 WPF ListView 删除选中项的示例代码:

XAML 代码:

<ListView x:Name='myListView'>
    <ListView.View>
        <GridView>
            <GridViewColumn Header='ID' Width='50' DisplayMemberBinding='{Binding Id}' />
            <GridViewColumn Header='Name' Width='120' DisplayMemberBinding='{Binding Name}' />
            <GridViewColumn Header='Age' Width='50' DisplayMemberBinding='{Binding Age}' />
            <GridViewColumn Header='IsSelected' Width='50'>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked='{Binding IsSelected}' />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>
<Button Content='Delete' Click='DeleteButton_Click' />

C# 代码:

public partial class MainWindow : Window
{
    private ObservableCollection<Person> persons;

    public MainWindow()
    {
        InitializeComponent();

        persons = new ObservableCollection<Person>
        {
            new Person { Id = 1, Name = 'John', Age = 20 },
            new Person { Id = 2, Name = 'Mary', Age = 25 },
            new Person { Id = 3, Name = 'Tom', Age = 30 },
            new Person { Id = 4, Name = 'Jane', Age = 35 }
        };

        myListView.ItemsSource = persons;
    }

    private void DeleteButton_Click(object sender, RoutedEventArgs e)
    {
        var selectedPersons = persons.Where(p => p.IsSelected).ToList();
        foreach (var person in selectedPersons)
        {
            persons.Remove(person);
        }
    }
}

public class Person : INotifyPropertyChanged
{
    private int id;
    private string name;
    private int age;
    private bool isSelected;

    public int Id
    {
        get { return id; }
        set
        {
            id = value;
            NotifyPropertyChanged();
        }
    }

    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            NotifyPropertyChanged();
        }
    }

    public int Age
    {
        get { return age; }
        set
        {
            age = value;
            NotifyPropertyChanged();
        }
    }

    public bool IsSelected
    {
        get { return isSelected; }
        set
        {
            isSelected = value;
            NotifyPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

在这个示例中,数据模型类 Person 实现了 INotifyPropertyChanged 接口,以便在属性值变化时更新 UI。Person 类有一个布尔类型的 IsSelected 属性,用于表示项是否被选中。在 XAML 中,我们为 IsSelected 属性绑定了一个 CheckBox 控件。

在删除按钮的单击事件处理程序中,我们使用 persons.Where(p => p.IsSelected) 获取所有被选中的项,并使用 foreach 循环从 persons 集合中删除它们。由于我们使用了 ObservableCollection 类型的 persons 集合,所以 UI 会自动更新。

注意,为了使 DeleteButton_Click 事件处理程序能够访问 persons 集合,我们将 persons 定义为一个类级别的字段。

WPF ListView 多选框删除选中项并获取ID实现代码

原文地址: https://www.cveoy.top/t/topic/nfBW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录