【发布时间】:2014-09-04 13:58:26
【问题描述】:
背景
我有一个DataGrid,当我在对数据网格进行排序时从其数据源列表中删除一个项目后,它似乎无法正确显示数据。
这是我的网格:
<DataGrid Name="fileGrid"
SelectionMode="Single" SelectionUnit="FullRow" AutoGenerateColumns="False"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SelectionChanged="fileGrid_SelectionChanged" PreviewKeyDown="PreviewKeyDownHandler">
<DataGrid.Columns>
<!-- other columns removed for brevity -->
<DataGridTextColumn Header="Installation" SortMemberPath="Customer.CompanyName" Width="*"
x:Name="columnCompanyName"
Binding="{Binding Path=Customer.CompanyName}"
IsReadOnly="True">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
我可以从列表中删除一个项目,例如通过调用
public void DeleteAndRebind(PanelData panelData)
{
_panelDataList.Remove(panelData);
Rebind();
}
Rebind() 定义为
public void Rebind()
{
fileGrid.ItemsSource = _panelDataList;
fileGrid.SelectedItem = _panelDataList.FirstOrDefault();
fileGrid.Items.Refresh();
}
网格正确显示,与panelData 对应的行已删除。
问题
但是,如果我按任何列对网格进行排序,然后调用 DeleteAndRebind(panelData),DataGrid 仍然包含我删除的项目,即使 _panelDataList 没有。
问题
当我对网格进行排序然后从中删除一个项目时,为什么DataGrid 不显示更新的_panelDataList?
【问题讨论】: