c# - 在 ItemsSourceUpdated 之后关注 DataGridRow
问题描述
我确实有一个基于计时器的更新DataGrid.ItemsSource
。在 View 中,我订阅了一个名为ViewModel_ItemsSourceChanged
.
此次更新后,我无法聚焦网格。
private void ViewModel_ItemsSourceChanged(object sender, ItemsSourceChangedEventArgs e)
{
if (e.Index > 0)
{
MainDataGrid.SelectedIndex = e.Index;
MainDataGrid.SelectedItem = MainDataGrid.Items[e.Index];
}
// pretty fine here
var dataGridRow = (DataGridRow)MainDataGrid.ItemContainerGenerator.ContainerFromItem(MainDataGrid.SelectedItem);
if (dataGridRow != null)
{
MainDataGrid.Focus();
dataGridRow.Focus();
dataGridRow.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
我尝试了很多答案,SNOOPS,,,FocusManager
等等Keyboard.Focus(MainDataGrid)
。没有什么对我有用。
您有任何想法如何将焦点放在 MainDataGrid/SelectedItems 行上吗?
解决方案
原因是应用程序中的某些东西在我的代码执行后偷走了焦点。
我通过使用将焦点重新放在 DataGrid 上的计时器来解决它。
推荐阅读
- node.js - NODEGIT - 向特定提交添加注释以存储元数据
- vlookup - VLOOKUP 针对有间隙的数据范围
- linux - 如何找到隐藏在 ssh 连接中的用户
- sql - 不使用子查询的聚合
- go - 获取包中的结构以进行 go-gorm 迁移
- sql - 针对红移数据的sql查询
- c# - 如何显示包含搜索词的长文本部分
- xml - 如果不满足匹配条件,XSLT 创建空文档
- reactjs - 如何在 Redux 异步中使用 SQLite?
- python-3.x - Pyinstaller 应用程序不适用于文件输入,给出 RuntimeError: input(): lost sys.stdin