WPF-通过DataGridCheckBoxColumn获取多行数据

首先说明我使用的是MVVM框架的stylet

解题方法:用lambda筛选绑定的数据集合

但是我一直写错了,我一直都是在ViewModel中调取数据库model用,但是这样是大大的错误,

弊端:1.如果UI需要展示一些其他的UI效果,且只能新增字段进行绑定控制,那数据库也要跟着改?不合理吧?

2.到后面的代码越写越烂,越写越难写,那这种情况下,这个项目基本上就废了,维护成本太大

正确的做法是:要在ViewModel层写读取数据库Model,那在数据库帮助类中调取的还是数据库Model,只是在ViewModel中将数据传递给视图Model了,如果觉得这样麻烦,还可以写一个转换类,用反射去处理,这样你只要配置一下就可以通用于任何常见的数据结构的转换赋值了(另外起一个辅助类进行封装)。

首先修改我的框架

然后开始实现功能

试试看吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在WPF中,要获取DataGrid中DataGridCheckBoxColumn选中的数据,可以通过以下步骤实现: 1. 首先,给DataGridCheckBoxColumn绑定一个数据源:在XAML中,通过设置DataGridCheckBoxColumn的Binding属性,将其绑定到ViewModel中的一个布尔型数据中。 ```xaml <DataGridCheckBoxColumn Header="选择" Binding="{Binding IsSelected}" /> ``` 2. 然后,在ViewModel中创建一个集合,用于存储选中的数据。 ```csharp private ObservableCollection<Item> selectedItems = new ObservableCollection<Item>(); public ObservableCollection<Item> SelectedItems { get { return selectedItems; } set { selectedItems = value; OnPropertyChanged(); } } ``` 其中,Item为数据源中的实体类,包含需要显示在DataGrid中的数据。 3. 接下来,在ViewModel中,监听DataGrid中CheckBox被选中的事件。当选中状态改变时,将选中的数据添加到SelectedItems集合中。 ```csharp public void CheckBox_Checked(object sender, RoutedEventArgs e) { var checkBox = sender as CheckBox; var item = checkBox.DataContext as Item; SelectedItems.Add(item); } ``` 4. 最后,在XAML中,将DataGrid的SelectedItems属性绑定到ViewModel中的SelectedItems集合: ```xaml <DataGrid SelectedItems="{Binding SelectedItems}" ... > ``` 这样,当CheckBox被选中时,SelectedItems集合会自动更新,其中存储了选中的数据。 ### 回答2: 在WPF中获取DataGrid中DataGridCheckBoxColumn选中的数据可以通过以下步骤实现: 1. 确定DataGridCheckBoxColumn所在的列索引。可以使用Visual Studio的XAML设计器或通过代码查找DataGrid的Columns集合以确定列索引。 2. 遍历DataGrid的Items集合,获取每一的DataGridRow对象。 3. 通过DataGridRow对象的Item属性获取关联的数据对象。 4. 通过DataGridCheckBoxColumn的列索引,获取该列中CheckBox元素的值。 5. 如果CheckBox的IsChecked属性为True,表示该的CheckBox选中,可以将关联的数据对象添加到选中数据集合中。 以下是一个示例代码: ```csharp List<DataObject> selectedData = new List<DataObject>(); int checkBoxColumnIndex = 3; // CheckBox列的索引 foreach (DataGridRow row in myDataGrid.Items) { DataObject data = (DataObject)row.Item; CheckBox checkBox = myDataGrid.Columns[checkBoxColumnIndex].GetCellContent(row) as CheckBox; if (checkBox != null && checkBox.IsChecked == true) { selectedData.Add(data); } } // 现在,selectedData列表中包含了选中的数据对象 ``` 示例代码中的"DataObject"指代你的实际数据类型。请根据实际情况进调整。 这样,你就可以通过遍历DataGrid的获取CheckBox列中的值,来获取DataGridCheckBoxColumn选中的数据。 ### 回答3: 在WPF中,要获取DataGrid中DataGridCheckBoxColumn选中的数据,可以按照以下步骤进操作: 1. 首先,在XAML文件中定义一个DataGrid,并定义DataGridCheckBoxColumn列,例如: ```xaml <DataGrid x:Name="MyDataGrid"> <DataGrid.Columns> <DataGridCheckBoxColumn Header="选择" Binding="{Binding IsChecked}" /> <!-- 其他列定义 --> </DataGrid.Columns> </DataGrid> ``` 2. 在后台代码中,创建一个集合用于存储选中的数据,使用一个数据绑定将该集合与DataGrid的ItemsSource属性进绑定,例如: ```csharp List<MyDataModel> selectedData = new List<MyDataModel>(); MyDataGrid.ItemsSource = selectedData; ``` 3. 通过遍历DataGrid的所有,以及DataGridCheckBoxColumn列的数据绑定,来判断哪些被选中,将选中的数据添加到selectedData集合中,可以通过以下代码实现: ```csharp foreach (MyDataModel item in MyDataGrid.Items) { DataGridRow row = MyDataGrid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow; if (row != null) { DataGridCheckBoxColumn checkBoxColumn = MyDataGrid.Columns[0] as DataGridCheckBoxColumn; FrameworkElement element = checkBoxColumn.GetCellContent(row); CheckBox checkBox = element as CheckBox; if (checkBox != null && checkBox.IsChecked == true) { selectedData.Add(item); } } } ``` 4. 最后,selectedData集合中存储着所有选中的数据,可以根据业务需求进后续处理。 以上就是在WPF中获取DataGrid中DataGridCheckBoxColumn选中的数据的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值