【发布时间】:2014-11-12 12:42:50
【问题描述】:
我是 WPF 新手,有两个 DataGrid 问题:
问题 1:
我得到了什么: 从数组中获取数据的 DataGird:
<DataGrid x:Name="dgMain" ItemsSource="{Binding TestArray}" Margin="0,20,0,0" LoadingRow="dgMain_LoadingRow">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Address" Binding="{Binding Address}"/>
<DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
</DataGrid.Columns>
</DataGrid>
我正在使用“LoadingRow”事件来更新行标题:
private void dgMain_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}
我想要什么: 它应该在行标题中显示行的索引。
有什么问题?:如果我添加项目或加载项目,效果很好,但如果我对 DataGird 进行排序,行的索引不会改变。
左侧未排序,右侧已排序(按名称)。在这个例子中,“F”行的索引应该是 6 而不是 1(右图)。
(与问题无关:为什么所有的RowHeaders都被选中了?)
问题 2:
我得到了什么: 见问题 1
我想要什么:添加一行后,它应该跳转到下一个空行。
什么问题?:如果我对数据网格进行排序,它会跳到下一行,即使它不是空的。
首先我按名称对列表进行排序,然后添加“A:First”,“B:Second”,“C:Third”,然后是“A:Fourth”,由于排序,“A:Fourth”自动得到第二行然后它跳到第三行而不是最后一个空行。
编辑:对不起,我忘了说:它应该 1. 重置排序和 2. 跳转到最后一个空行。顺序应为“A:第一”、“B:S”、“C:T”和“A:第四”。
我真的希望有简单的解决方案。谢谢:)
【问题讨论】: