网上找了遍历DataGrid,但是都不能用,终于组合出来了~~
/// <summary>
/// 获取DataGrid遍历后的数据
/// </summary>
/// <param name="dg"></param>
/// <returns></returns>
public string DataGrid(DataGrid dg)
{
try {
string str = "";
for (int j = 0; j < dg.Items.Count; j++)
{
DataGridCell c = DataGridHelper.GetCell(dg, j, 0);
TextBlock tb = c.Content as TextBlock;
if (str.Equals(string.Empty))
{
str = tb.Text;
}
else
{
str = str + "!" + tb.Text;//直接获取datagrid 遍历后的当前数据
}
}
return str;
}
catch
{
return null;
}
}
Class :
以下代码网上扒的~~~~
static class DataGridHelper{
static public DataGridCell GetCell(DataGrid dg, int row, int column){
DataGridRow rowContainer = GR(dg, row);
if (rowContainer != null)
{
DataGridCellsPresenter p = GC<DataGridCellsPresenter>(rowContainer);
DataGridCell cell = (DataGridCell)p.ItemContainerGenerator.ContainerFromIndex(column);
if (cell == null)
{
dg.ScrollIntoView(rowContainer, dg.Columns[column]);
cell = (DataGridCell)p.ItemContainerGenerator.ContainerFromIndex(column);
}
return cell;
}
else{
return null;
}
}
static public DataGridRow GR(DataGrid dg, int index){
DataGridRow r = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
if (r == null)
{
dg.ScrollIntoView(dg.Items[index]);
r = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
}
return r;
}
static T GC<T>(Visual parent) where T : Visual
{
T child = default(T);
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
child = v as T;
if (child == null)
{
child = GC<T>(v);
}
if (child != null)
{
break;
}
}
return child;
}
}