C# 自动增量DataGrid列,而不将其添加到DataContext

C# 自动增量DataGrid列,而不将其添加到DataContext,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,在myDataGrid中有一个串行列,它唯一的任务是在记录旁边显示订单号,因此如果有10条记录,则该列包含1到10之间的数字。。为了实现这一点,我添加了一个新属性,特别是在分部类和代码I循环中,通过列表增加每个循环的Serial属性: for (int i = 0; i < lstPriceListItems.Count; i++) { lstPriceListItems[i].Serial = i + 1; } for(int i=0;i

在my
DataGrid
中有一个串行列,它唯一的任务是在记录旁边显示订单号,因此如果有10条记录,则该列包含1到10之间的数字。。为了实现这一点,我添加了一个新属性,特别是在分部类和代码I循环中,通过列表增加每个循环的
Serial
属性:

    for (int i = 0; i < lstPriceListItems.Count; i++)
    {
       lstPriceListItems[i].Serial = i + 1;
    }
for(int i=0;i
然后在XAML中:

<DataGrid.Columns>
           <DataGridTextColumn Header="Serial" Binding="{Binding Serial}"/>
           <DataGridTextColumn Header="Code" Binding="{Binding Code}"/>
</DataGrid.Columns>


我认为这是不实际的,因为
lstPriceListItems
表示一个数据对象,而
Serial
是一个数字表示的UI功能,它们不能组合在一起,因此我认为,如果XAML能够在不涉及DataContext的情况下处理这样的场景,那么您的方法实际上没有什么问题
lstPriceListItems
可能被视为视图模型,因为它显示在
DataGrid

如果您在客户端应用程序之外的其他地方使用此类,您可以创建一个新类来包装它,并添加额外的
Serial
属性,并将
DataGrid
ItemsSource
属性设置为新类型的序列,并像您当前所做的那样填充
Serial
属性


另一种方法是处理
DataGrid
LoadingRow
事件,如下所示:。或者使用显示当前项目基于1的索引的转换器进行绑定。

您能解释一下使用转换器的建议吗?阅读博客文章。我阅读了使用LoadingRow事件的部分,该事件在DataGrid中有效,但在Syncfusion SfDataGrid中无效(为了简单起见,我没有提及)。。那我就看全文。谢谢