您的位置:首页 > 其它

转:wpf 中获取datagrid 某一行的值 某一列的值 某一行中某一列单元格的值

2013-01-17 18:31 459 查看
public static void SetDataGridCellIsEnabled(DataGrid datagrid, int rowIndex, int[] cellIndexArray, bool IsEnabled) { for (int index = 0; index < cellIndexArray.Length; index++) { DataGridCell currentCell = GetDataGridCell(datagrid, rowIndex, cellIndexArray[index]); if (currentCell != null) { currentCell.IsEnabled = IsEnabled;

这行代码是隐藏单元格

Button button1= currentCell.ChildrenOfType<Button>();

这行代码是得到模板控件里的子控件 } } }
public static DataGridCell GetDataGridCell(DataGrid datagrid, int rowIndex, int columnIndex) { try { DataGridRow rowContainer = GetDataGridRow(datagrid, rowIndex); if (rowContainer != null) { DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);

这行代码是通过行得到单元格

DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);

这行代码是通过index得到具体的单元格

if (cell == null) { datagrid.ScrollIntoView(rowContainer, datagrid.Columns[columnIndex]); cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex); }
return cell; } } catch { return null; } return new DataGridCell(); }
public static DataGridRow GetDataGridRow(DataGrid datagrid, int rowIndex) { DataGridRow row = (DataGridRow)datagrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);

这行代码的作用是得到datagrid的一行

if (row == null) { datagrid.UpdateLayout(); //datagrid.ScrollIntoView(datagrid.Items[rowIndex]); row = (DataGridRow)datagrid.ItemContainerGenerator.ContainerFromIndex(rowIndex); } return row; }
public static T GetVisualChild<T>(Visual parent) where T : Visual { T childContent = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); childContent = v as T; if (childContent == null) { childContent = GetVisualChild<T>(v); } if (childContent != null) { break; } } return childContent; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: