移动到最后选定的行,不突出显示最近单击的行

本文关键字:显示 最近 单击 移动 最后 | 更新日期: 2023-09-27 17:54:10

我有DataGrid和添加的事件如下,执行一些计算验证,如果验证是成功的,那么什么也不做。但是如果验证失败,那么突出显示的行应该仍然是最后选择的行,而不是新单击的行:-

        public void dataGridTable_SelectionChanged(object sender, SelectionChangedEventArgs e)
                {
                    if (dataGrid.SelectedIndex == lastSelectedIndex)
                    {
                        return;
                    }
    /*

   Validate method will return true if row validation is fine else false.
        */
    if(!validate())
    {
    // Revert to last selected index.
        dataGrid.SelectedIndex = lastSelectedIndex;
    }
     }

dataGrid.SelectedIndex = lastSelectedIndex;这段代码将使选定的索引作为最后选择的索引(在c#代码中,我在调试模式下检查它),但在WPF DataGrid中仍然突出显示新单击的行。

如果我说的不够清楚,请让我知道。

谢谢

移动到最后选定的行,不突出显示最近单击的行

可以使用DataGrid清除选定的单元格。SelectedCells财产。

Just do

this.SelectedCells.Clear();

清除当前选择。

如果你想在SelectedIndex的当前行中选择单元格你可以执行

this.SelectAllCells();
DataGridCellInfo[] cells = this.SelectedCells.Where(x => this.Items.IndexOf(x.Item) == this.SelectedIndex).ToArray();
this.SelectedCells.Clear();
foreach (DataGridCellInfo cell in cells)
{
     this.SelectedCells.Add(cell);
}

其中this为DataGrid的实例