一个简单的问题,一个尚未解决的答案。我们的窗口上有一个支持多选的WPF DataGrid。假设它有10个项目,你选择了6到10个项目。如果选项卡远离控件,当控件再次获得焦点时,第一个项目将被聚焦但未被选中。选择仍然在第6到第10项。这对我们来说更糟糕,因为我们隐藏了焦点矩形,而是依赖于选择突出显示,这是用户期望发生的事情。
我已经尝试过响应IsKeyboardFocusWithinChanged事件,如此处所示,包括有和没有调度员,可能还有其他东西在事后发生了变化,但仍无济于事。
private void TestDataGrid_IsKeyboardFocusWithinChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if(!(bool)e.NewValue)
return;
Dispatcher.Invoke(new Action(() =>
{
var firstSelectedItem = VariableValuesDataGrid.SelectedItem;
if(firstSelectedItem != null)
VariableValuesDataGrid.CurrentItem = firstSelectedItem;
}), DispatcherPriority.Background);
}
知道怎么解决这个问题吗?
答案 0 :(得分:1)
我对WPF DataGrid并不熟悉,但我怀疑你必须处理旧表格DataGridView的相同问题。
仅选择设置所选行的高亮显示并且实际上不会对其进行聚焦。并且CurrentRow
属性不幸是私有的,但CurrentCell
属性不是,可以用来设置选择。
myDataGrid.CurrentCell = myDataGrid.Rows[i].Cells[0];
myDataGrid.Rows[i].Selected = True;