本文共 2075 字,大约阅读时间需要 6 分钟。
定义一个DataGrid
注意: 一定要设置VirtualizingStackPanel.IsVirtualizing="False"
////// 将SelectedItem滚动为第一行 /// /// 目标DagaGrid /// 选中项 public static void SetSelectedItemFirstRow(object dataGrid, object selectedItem) { //若目标datagrid为空,抛出异常 if (dataGrid == null) { throw new ArgumentNullException("目标无" + dataGrid + "无法转换为DataGrid"); } //获取目标DataGrid,为空则抛出异常 System.Windows.Controls.DataGrid dg = dataGrid as System.Windows.Controls.DataGrid; if (dg == null) { throw new ArgumentNullException("目标无" + dataGrid + "无法转换为DataGrid"); } //数据源为空则返回 if (dg.Items == null || dg.Items.Count < 1) { return; } //获取焦点,滚动为目标行 dg.Focus(); dg.SelectedItem = selectedItem; dg.CurrentColumn = dg.Columns[0]; dg.ScrollIntoView(dg.SelectedItem, dg.CurrentColumn); } ////// 获取选中的行 /// /// /// ///public static DataGridRow GetDataGridRow(DataGrid datagrid, int rowIndex) { DataGridRow row = (DataGridRow)datagrid.ItemContainerGenerator.ContainerFromIndex(rowIndex); if (row == null) { datagrid.UpdateLayout(); row = (DataGridRow)datagrid.ItemContainerGenerator.ContainerFromIndex(rowIndex); row.IsSelected = true; } return row; }
在代码中使用这两个函数
resultDataGrid.SelectedItem = item; DataGridRow resRow = GetDataGridRow(resultDataGrid, (int)item.ID); resRow.IsSelected = true; SetSelectedItemFirstRow(resultDataGrid,resultDataGrid.SelectedItem); resultDataGrid.UpdateLayout();
参考:
转载地址:http://hkiii.baihongyu.com/