【发布时间】:2017-12-17 23:35:26
【问题描述】:
<DataGrid x:Name="gridView" HorizontalAlignment="Left" Height="263" Margin="10,10,0,0" VerticalAlignment="Top" Width="235" AutoGeneratingColumn="gridView_AutoGeneratingColumn" GotFocus="gridView_GotFocus">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
//Get count and data of checked parts from gridview
foreach (var row in gridView.ItemsSource)
{
bool IsChecked = (bool)((CheckBox)gridView.Columns[0].GetCellContent(row)).IsChecked;
if (IsChecked)
{
var part = ((TextBlock)gridView.Columns[1].GetCellContent(row)).Text;
var code = ((TextBlock)gridView.Columns[2].GetCellContent(row)).Text;
var um = ((TextBlock)gridView.Columns[3].GetCellContent(row)).Text;
addToPartList(part, code, um);
checkCount += 1;
}
}
此代码的目的是从用户检查过的所有行中收集行数据。 Datagrid 的数据源是一个在网格中添加了复选框列的列表。问题是,如果网格足够大以至于需要网格滚动条,那么可见网格之外的行在转换为 bool 类型时会返回空引用异常。我该如何解决这个问题?
【问题讨论】:
-
为什么不使用空检查?