在 ItemSource 刷新时删除的数据网格行突出显示
本文关键字:网格 显示 数据网 数据 刷新 ItemSource 删除 | 更新日期: 2023-09-27 18:36:15
我有一个People
DataGrid
,我可以从中删除People
。删除Person
后,我调用以下方法;
private void SetSelectedPerson(int personDeleted, int personID)
{
if (peopleDataGrid.SelectedIndex > 0)
{
peopleDataGrid.SelectedIndex--;
}
else
{
peopleDataGrid.SelectedIndex = 0;
}
}
这确实会选择上一个Row
,但是它会从SelectedRow
中删除突出显示。这不是我想要的,因为尽管SelectedIndex
是正确的,但看起来不像是向用户选择了Row
。
我确实刷新了DataGrid
ItemSource
,以便从当前Collection
中删除已删除的Person
。如果我不刷新ItemSource
,突出显示是正确的,但当然删除的Person
不会从DataGrid
中删除。
我刷新ItemSource
使用;
People = await ReturnPeople();
PeopleICollectionView = CollectionViewSource.GetDefaultView(People);
peopleDataGrid.ItemsSource = PeopleICollectionView;
DataContext = this;
如何在ItemSource
更新中突出显示Row
?
编辑:对于樱花
这就是我如何绑定DataGrid
,如果我删除ItemSource
的硬代码..
People = await ReturnPeople();
PeopleICollectionView = CollectionViewSource.GetDefaultView(People);
DataContext = this;
而在XAML
;
<DataGrid x:Name="peopleDataGrid" IsReadOnly="true" Margin="10,15,10,5" ColumnWidth="*" FontSize="14"
HeadersVisibility="Column" AutoGenerateColumns="False" CanUserAddRows="False"
SelectionChanged="DataGridSelectionChanged" ItemsSource="{Binding PeopleICollectionView}">
但是,当我删除一个人时,它不会在DataGrid
更新......
删除一个人后,我调用以下方法...
首先,如果您的DataGrid
是单选模式,则当您删除所选项目时,所选索引将设置为 -1。 如果是多选模式,它将返回另一个选定项目的索引,如果没有,则返回 -1。因此,在删除行之前,您必须获取数据网格的选定索引。然后在删除后使用此值。
其次,如果数据网格已正确绑定,则无需刷新数据上下文即可使其更新。
如果有兴趣解决此问题,请在此处发布绑定代码。