C# 自动增量DataGrid列,而不将其添加到DataContext
在myC# 自动增量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
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中无效(为了简单起见,我没有提及)。。那我就看全文。谢谢