代码之家  ›  专栏  ›  技术社区  ›  NetSide

如何显示wpf toolkit datagrid的行索引?

  •  3
  • NetSide  · 技术社区  · 16 年前

    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>
    
    3 回复  |  直到 15 年前
        1
  •  4
  •   Aran Mulholland JohnnyAce    16 年前

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

    在…上 this page

    享受吧!

        2
  •  4
  •   John Myczek    16 年前

    我现在没有代码示例,但是根据 this post 有一个“LoadingRow事件,您可以附加到它”。在事件中,您可以根据事件参数中的项目将每次标题设置为所需的编号。”

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

        3
  •  3
  •   GrantA    9 年前

    忘记多重绑定和转换器吧。您完全可以在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开始,可以向替换索引绑定添加转换器以增加索引。