在下一个代码中,我定义了一个名为dgQuery的WPF工具包数据网格控件;我用数据集的信息填充了这一行,然后在dgQuery中插入了一个新的复选框列以检查/取消选中某些行,并显示了我的C#代码的一部分:

dgQuery.DataContext = dS.Tables[0];

DataGridTemplateColumn cbCol = new DataGridTemplateColumn();
cbCol.Header = "Opc";
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(CheckBox));
Binding bind = new Binding("IsSelected");
bind.Mode = BindingMode.TwoWay;
factory.SetValue(CheckBox.IsCheckedProperty, bind);
DataTemplate cellTemplate = new DataTemplate();
cellTemplate.VisualTree = factory;
cbCol.CellTemplate = cellTemplate;
dgQuery.Columns.Insert(0, cbCol);


选中/取消选中dgQuery行的新复选框列之后,我将单击一个按钮,将仅选中的行保存到数据库中。问题是,如何开发循环以读取dgQuery的所有行,以及使我知道复选框已选中/未选中的行的条件?请帮我举个例子。

谢谢!!

最佳答案

这将在您的数据网格中返回一个“行”

public IEnumerable<Microsoft.Windows.Controls.DataGridRow> GetDataGridRows(Microsoft.Windows.Controls.DataGrid grid)
    {
        var itemsSource = grid.ItemsSource as IEnumerable;
        if (null == itemsSource) yield return null;
        foreach (var item in itemsSource)
        {
            var row = grid.ItemContainerGenerator.ContainerFromItem(item) as Microsoft.Windows.Controls.DataGridRow;
            if (null != row) yield return row;
        }
    }

在wpf datagrid中,行是ItemSsource.items ...没有Rows属性!
希望这可以帮助...

10-04 16:20