当用户按下箭头键时,这是Key.Down事件,我正在尝试在Datagrid中选择第一行。
它现在可以正常工作,但是即使我通过索引[0],它仍会以某种方式选择第二行...
我创建了SelectRowByIndex方法,该方法应该选择Datagrid的第一行,如下所示:
private static void SelectRowByIndex(DataGrid dataGrid, int rowIndex)
{
if (!dataGrid.SelectionUnit.Equals(DataGridSelectionUnit.FullRow))
throw new ArgumentException("The SelectionUnit of the DataGrid must be set to FullRow.");
if (rowIndex < 0 || rowIndex > (dataGrid.Items.Count - 1))
throw new ArgumentException(string.Format("{0} is an invalid row index.", rowIndex));
dataGrid.SelectedItems.Clear();
object item = dataGrid.Items[rowIndex];
dataGrid.SelectedItem = item;
DataGridRow row = dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex) as DataGridRow;
if (row == null)
{
//Moram dodati BillItemTemp u slučaju da je virtualized away
dataGrid.ScrollIntoView(item);
row = dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex) as DataGridRow;
}
if (row != null)
{
DataGridCell cell = GetCell(dataGrid, row, 0);
if (cell != null)
cell.Focus();
}
}
之后,在加载表单时,我在构造函数中调用了它:
this.PreviewKeyDown += (s, e) =>
{
if (e.Key == Key.Down && dtgProducts.HasItems)
SelectRowByIndex(dtgProducts, 0);
};
但是以某种方式选择第二行?而不是第一个...怎么来的?
而且,当我不断按下Key.Down时不要一直选择同一行,我需要确保自己的安全。
慕侠2389804
慕勒3428872
相关分类