在DataGrid中显示行号

时间:2015-02-09 09:20:31

标签: c# wpf mvvm datagrid

我有一个DataGrid,其中ItemsSource绑定到ViewModel中的ObservableCollection<LogEntry>。在DataGrid中,会显示Message - 类中的属性DateLogEntry

ItemsSource中的项目经常会发生变化,具体取决于外部选择。

现在我想在我的DataGrid中引入一个显示行号的附加列。

有没有一种简单的方法可以在带MVVM的WPF中执行此操作,还是必须创建一个继承自RowLogEntry的新类(例如LogEntry)并为行号提供属性?

1 个答案:

答案 0 :(得分:1)

一种方法是在DataGrid的LoadingRow事件中添加它们

 <DataGrid Name="DataGrid" LoadingRow="DataGrid_LoadingRow" ...

    void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        e.Row.Header = (e.Row.GetIndex()).ToString(); 
    }

在源列表中添加或删除项目时,这些数字可能暂时不同步

在源列表中添加或删除项目时,这些数字可能暂时不同步。For a fix to this, see the attached behavior here:

<DataGrid ItemsSource="{Binding ...}"
          behaviors:DataGridBehavior.DisplayRowNumber="True">

如果你想从1

计算,请改用它
void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
    e.Row.Header = (e.Row.GetIndex()+1).ToString(); 
}

希望这有帮助