我正在尝试检索当前DataGridCell对象的行索引。如果它是一个对角线单元,我需要它来改变单元格的背景颜色。
我尝试了两个选项,如下所示,两个选项都给了我行索引。但是当我尝试移动滚动条(当网格很大时)并返回到datagrid的顶部时,这两个选项的行索引每次为相同的行提供不同的行索引。基本上,每当我向下滚动时,我都会得到不同颜色的网格。
class CellFormatConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
DataGridCell dgc = (DataGridCell)value;
DataRowView rowView = (DataRowView)dgc.DataContext;
//Option 1
DependencyObject row = value as DependencyObject;
while (row != null && !(row is DataGridRow))
{
row = VisualTreeHelper.GetParent(row);
}
int rowIndex = 0;
if(row!=null)
{
DataGridRow gridrow = (DataGridRow)row;
rowIndex = gridrow.GetIndex();
}
//option 2
//int rowIndex = rowView.Row.Table.Rows.IndexOf(rowView.Row);
if (dgc.Column.DisplayIndex == rowIndex)
{
return Brushes.Red;
}
return Brushes.White;
}
}
更新: 在努力解决问题后,我认为列的displayIndex不断变化导致了这个问题。 后来,我删除了基于displayIndex的实现,现在我使用内容值来决定背景颜色。现在,我的问题是每次我向下滚动并向上滚动网格看起来都不同颜色!!
答案 0 :(得分:-1)
Dim iCol = maingrid.CurrentCell.ColumnIndex
Dim iRow = maingrid.CurrentCell.RowIndex
iRow可以获得Currentcell Row index.use it !!
如果您想更改当前单元格...请使用以下
maingrid.CurrentCell = maingrid(icol,iRow)