4

我只想在 wpf 工具包中添加一个索引列DataGrid来显示DataGrid. 如何?

<dg:DataGrid ItemsSource="{Binding List}"                              
             SelectionMode="Extended"
             IsReadOnly="True"
             AutoGenerateColumns="False"
             HorizontalAlignment="Left">
    <dg:DataGrid.Columns>

        **<dg:DataGridTextColumn Header="Row Index"></dg:DataGridTextColumn>**
        <dg:DataGridTextColumn Header="Branch"
                               Binding="{Binding Branch.Id}"></dg:DataGridTextColumn>
        <dg:DataGridTextColumn Header="Count"
                               Binding="{Binding RequestCount}"></dg:DataGridTextColumn>
    </dg:DataGrid.Columns>
</dg:DataGrid>
4

3 回答 3

4

我现在没有代码示例,但根据这篇文章,有一个“您可以附加到的 LoadingRow 事件。如果您可以根据事件中的项目每次将标题设置为您想要的数字参数。”

这是我能找到的唯一方法。似乎没有优雅的 XAML 解决方案。

于 2010-01-11T13:29:28.920 回答
4

您可以使用多重绑定和转换器绑定到行中的项目和父数据网格。然后在转换器中查找数据网格项目中行的位置。

此页面上下载示例 WPFDatagridWithRowNumbers.zip

享受!

于 2010-01-11T23:06:47.143 回答
3

忘记多重绑定和转换器。您可以完全在 XAML 中执行此操作。

首先,将数据网格的 AlternationCount 属性绑定到集合的 count 属性或 DataGrid 的 Items.Count 属性,如下所示:

<dg:DataGrid AlternationCount="{Binding List.Count}" />

或者:

<dg:DataGrid AlternationCount="{Binding Items.Count, RelativeSource={RelativeSource Self}" />

要么应该工作。

然后,假设您使用 DataGridTextColumn 作为最左边的列,您在 DataGrid.Columns 定义中执行以下操作:

<dg:DataGrid.Columns>
   <dg:DataGridTextColumn Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}"
</dg:DataGrid.Columns>

如果您不想从 0 开始,可以将转换器添加到交替索引绑定以增加索引。

于 2016-11-14T21:47:00.403 回答