使用 C#.NET4.5、MS Visual Studio 2012、WPF。
大家好,这里有一些代码给我null。此代码是我尝试过的先前解决方案。我没有收到任何错误,但自从今天我发现我调试那里的行为空以来从未对其进行过测试。
继承人的代码:
第一次我把我从 SQL 收集的数据扔到一个数据表中,然后把它扔到我的数据网格中......
private void LoadPareto(string pg)
{
DataTable tbl = new DataTable();
tbl = mysqlq.SQL_GetPareto(pg);
paretogrid.ItemsSource = tbl.AsDataView();
// InsertColumns();
ShowArrows();
}
第二次在 XAML 中设置绑定...
<DataGrid Name ="paretogrid" ItemsSource="{Binding}"
第三,我创建了一个 Ienumerable ......
public IEnumerable<System.Windows.Controls.DataGridRow> GetDataGridRow(System.Windows.Controls.DataGrid grid)
{
var itemsource = grid.ItemsSource as System.Collections.IEnumerable;
if (null == itemsource) yield return null;
foreach (var item in itemsource)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow; // null?
if (null != row) yield return row;
}
}
然后我用这个方法调用它......
private void ShowArrows()
{
var rows = GetDataGridRow(paretogrid); // fetching null?
foreach (DataGridRow r in rows)
{
DataRowView rv = (DataRowView)r.Item;
foreach (DataGridColumn column in paretogrid.Columns)
{
if (column.GetCellContent(r) is TextBlock)
{
TextBlock cellcontent = column.GetCellContent(r) as TextBlock;
MessageBox.Show(cellcontent.Text);
}
}
}
}
现在我遇到的问题是在 Ienumerbale 中,我看到我的项目源包含 12007 条记录,这是完美的。然而,当我走过时,我发现...
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
返回 null ,我的“if”语句发现它为假,因此跳过了产量。所以当然,当我在“showarrows”方法中逐步执行foreach循环时,它不会打扰,因为有空值。
那么我哪里错了?我错过了什么吗?
在此先感谢伙计们!