我有DataGrid
People
我可以删除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
,以便从当前Person
中删除已删除的Collection
。如果我不刷新ItemSource
,则突出显示是正确的,但当然不会从Person
中删除已删除的DataGrid
。
我使用;
刷新ItemSource
People = await ReturnPeople();
PeopleICollectionView = CollectionViewSource.GetDefaultView(People);
peopleDataGrid.ItemsSource = PeopleICollectionView;
DataContext = this;
如何在Row
更新中突出显示ItemSource
?
编辑:对于Sakura
如果我删除了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
...
答案 0 :(得分:1)
删除一个人后,我调用以下方法......
首先,如果您的DataGrid
是单一选择模式,当您删除所选项目时,所选索引将设置为-1。如果它是多选模式,它将返回另一个所选项的索引,如果没有,则返回-1。因此,您必须在删除行之前获取所选的datagrid 索引。然后在删除后使用此值。
其次,如果您的数据网格绑定正确,则无需刷新datacontext即可进行更新。
如果您有兴趣解决此问题,请在此处发布您的绑定代码。