我有一个DataGrid
,其中ItemsSource
绑定到ViewModel中的ObservableCollection<LogEntry>
。在DataGrid
中,会显示Message
- 类中的属性Date
和LogEntry
。
此ItemsSource
中的项目经常会发生变化,具体取决于外部选择。
现在我想在我的DataGrid
中引入一个显示行号的附加列。
有没有一种简单的方法可以在带MVVM的WPF中执行此操作,还是必须创建一个继承自RowLogEntry
的新类(例如LogEntry
)并为行号提供属性?
答案 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();
}
希望这有帮助