首页 > 解决方案 > 在 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 行上吗?

标签: c#wpf

解决方案


原因是应用程序中的某些东西在我的代码执行后偷走了焦点。

我通过使用将焦点重新放在 DataGrid 上的计时器来解决它。


推荐阅读