我有一个 WPF DataGrid,我正在尝试使用以下代码自动滚动:
private void mydatagrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
mydatagrid.ScrollIntoView(mydatagrid.CurrentItem);
}
我遇到的问题是每次 DataGrid 的 SelectedIndex 更改时都不会调用此事件处理程序。是的,当我单击网格或添加或删除一个项目时,它会被调用,但它不会被其他一些操作调用,例如在基础集合中向上或向下移动当前选定的项目,该集合通过以下方式设置:
mydatagrid.ItemsSource = 序列;
(其中 Seq 是从 ObservableCollection<> 派生的类型的对象)。
在我的故障排除尝试中,我将 TextBlock 的文本绑定到 mydatagrid 的 SelectedIndex 属性。无论我对数据网格和/或基础数据源执行什么操作,索引号都会完美更新。
所以我的问题是:我如何在 C# 代码中创建一个事件处理程序,该处理程序会在 SelectedIndex 的值的任何和所有更改时被调用,就像我的小文本块绑定示例一样?
我尝试为 DataGrid 查找 propertyChanged 事件,但无济于事。我尝试利用似乎远程相关的所有 DataGrid 事件,但无济于事。我也尝试过使用基础集合的 CollectionChanged 事件,但这似乎与数据网格没有很好的同步(至少在事件发生的那一刻)。
谢谢