WPF 多选框删除数据 - 获取当前行 ID 实现代码
假设你有一个包含多个复选框的数据表格,并且每行数据都有一个唯一的 ID。你想要实现一个功能,当用户选中一些复选框并点击'删除'按钮时,你可以删除所有选中行的数据。
以下是实现此功能的代码示例:
XAML 代码:
<DataGrid x:Name="myDataGrid" ItemsSource="{Binding DataList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="选择" Binding="{Binding IsSelected}" />
<DataGridTextColumn Header="ID" Binding="{Binding ID}" />
<DataGridTextColumn Header="名称" Binding="{Binding Name}" />
<DataGridTextColumn Header="年龄" Binding="{Binding Age}" />
</DataGrid.Columns>
</DataGrid>
<Button Content="删除" Click="DeleteButton_Click" />
C# 代码:
public class DataItem : INotifyPropertyChanged
{
private int id;
public int ID
{
get { return id; }
set { id = value; NotifyPropertyChanged(nameof(ID)); }
}
private string name;
public string Name
{
get { return name; }
set { name = value; NotifyPropertyChanged(nameof(Name)); }
}
private int age;
public int Age
{
get { return age; }
set { age = value; NotifyPropertyChanged(nameof(Age)); }
}
private bool isSelected;
public bool IsSelected
{
get { return isSelected; }
set { isSelected = value; NotifyPropertyChanged(nameof(IsSelected)); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class ViewModel : INotifyPropertyChanged
{
private ObservableCollection<DataItem> dataList;
public ObservableCollection<DataItem> DataList
{
get { return dataList; }
set { dataList = value; NotifyPropertyChanged(nameof(DataList)); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public partial class MainWindow : Window
{
private ViewModel viewModel;
public MainWindow()
{
InitializeComponent();
viewModel = new ViewModel();
viewModel.DataList = new ObservableCollection<DataItem>()
{
new DataItem() { ID = 1, Name = "张三", Age = 18 },
new DataItem() { ID = 2, Name = "李四", Age = 20 },
new DataItem() { ID = 3, Name = "王五", Age = 22 },
new DataItem() { ID = 4, Name = "赵六", Age = 24 },
};
DataContext = viewModel;
}
private void DeleteButton_Click(object sender, RoutedEventArgs e)
{
var selectedItems = viewModel.DataList.Where(item => item.IsSelected).ToList();
foreach (var item in selectedItems)
{
viewModel.DataList.Remove(item);
}
}
}
在这个示例中,我们首先定义了一个 DataItem 类来表示每行数据,其中包含一个 ID 属性和一个 IsSelected 属性,IsSelected 属性用于表示是否选中该行。然后我们定义了一个 ViewModel 类,用于维护数据列表,并包含一个 DataList 属性和一个 DeleteButton_Click 方法。在 DeleteButton_Click 方法中,我们首先使用 LINQ 查询选中的行,然后遍历选中的行并从 DataList 中删除。最后,我们将 ViewModel 对象绑定到窗口的 DataContext 上,并将复选框列的 Binding 设置为 IsSelected 属性。
原文地址: https://www.cveoy.top/t/topic/nfBe 著作权归作者所有。请勿转载和采集!