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

时间:2017-09-25 14:12:13

标签: c# wpf xaml datagrid

在我的DataGrid中有一个Serial列,它唯一的工作是显示记录旁边的订单号,所以如果有10条记录,那么该列保存1到10之间的数字..为了达到这个目的,我m在部分类中添加一个新属性,尤其是对于该情况,并在代码中循环遍历列表,为每个循环递增Serial属性:

    for (int i = 0; i < lstPriceListItems.Count; i++)
    {
       lstPriceListItems[i].Serial = i + 1;
    }

然后在XAML中:

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

我相信这是不切实际的,因为lstPriceListItems表示数据对象,而Serial是表示为数字的UI功能,它们不能组合在一起,所以我想如果有的话在XAML处理此类场景而不触及DataContext的方式

1 个答案:

答案 0 :(得分:1)

你的方法确实没有错。 lstPriceListItems可能被视为视图模型,因为它显示在DataGrid中。

如果您在客户端应用程序之外的其他位置使用此类,则可以创建一个包装它的新类并添加其他Serial属性并设置{{1}的ItemsSource属性转到新类型的序列并填充{J}目前正在执行的DataGrid属性。

另一种方法是按照此处的建议处理Serial的{​​{1}}事件:in here。或者使用显示当前项目的从1开始的索引的转换器进行绑定。