WPF数据网格,如何创建"左侧"头?

时间:2017-02-18 15:06:48

标签: wpf datagrid

我尝试过不同的事情,我想知道如何在数据网格的左边添加行计数器? (就像我们在excel中看到的那样)

我认为可能:

enter image description here

但我不知道如何实现这一点。

我承认,在谈到WPF时我是一个新手,但在对象属性中,并不是一个"复选框"激活它,到目前为止我没有遇到任何明确的代码,所以我不确定它是简单的,还是一些精心设计的黑客。

TY。

2 个答案:

答案 0 :(得分:1)

使用DataTable填充DataGrid,然后使用

<强>主窗口

php

<强>的Xaml

crc32

<强>转换器

    public MainWindow()
    {
        InitializeComponent();
                  DataTable tab = new DataTable();
        for (int i = 0; i < 10; i++)
            tab.Columns.Add("col " + i.ToString());
        for (int i = 0; i < 1000; i++)
        {
            DataRow r = tab.NewRow();
            for (int j = 0; j < 10; j++)
                r[j] = "row " + (i).ToString() + "-col " + (j).ToString();
            tab.Rows.Add(r);
        }
        dg.ItemsSource = tab.AsDataView();  
    }

答案 1 :(得分:1)

以下链接提供了有关如何执行此操作的完整代码示例。

在WPF中向DataGridRowHeader添加右对齐的行号: https://blog.magnusmontin.net/2014/08/18/right-aligned-row-numbers-datagridrowheader-wpf/

您可以将TextBlock放在RowHeaderTemplate的{​​{1}}中,然后使用转换器获取该行的索引:

DataGrid

但是这种方法只有在虚拟化被禁用或者<DataGrid ItemsSource="{Binding Countries}" AutoGenerateColumns="False" xmlns:local="clr-namespace:Mm.WpfApplication1"> <DataGrid.Columns> <DataGridTextColumn Header="Country" Binding="{Binding Name}"/> </DataGrid.Columns> <DataGrid.Resources> <local:RowNumberConverter x:Key="converter"/> </DataGrid.Resources> <DataGrid.RowHeaderTemplate> <DataTemplate> <TextBlock Text="{Binding Path=., RelativeSource={RelativeSource AncestorType=DataGridRow}, Converter={StaticResource converter}}"></TextBlock> </DataTemplate> </DataGrid.RowHeaderTemplate> <DataGrid.RowHeaderStyle> ... </DataGrid.RowHeaderStyle> </DataGrid> 中只有几行时才会起作用。如果您想正确显示行号但仍保留ItemsSource的默认虚拟化和回收行为,则可以处理DataGrid的{​​{1}}事件来设置LoadingRow 1}} DataGrid到行号的属性,然后绑定到Header中的此属性。

另请注意,如果DataGridRow绑定到RowHeaderTemplate并且您在运行时动态添加或删除项目,则行号不会更新,直到您开始滚动并再次触发DataGrid事件。

要解决此问题,您可以将事件处理程序连接到视图中ObservableCollection<T>的{​​{1}}的{​​{1}}事件,并重置所有LoadingRow属性发生此事件时当前位于可视树中的ItemsChanged个元素。

请参阅以上链接以获取更多信息和完整的工作样本。