Убежавший от необработанных указателей функции C++ и использования std::function
вместо этого.
можно использовать boost::function
при использовании старого компилятора, такого как Visual Studio 2008, который не имеет никакой поддержки C++ 11. boost:function
и std::function
то же самое - они вытянули довольно мало материала повышения в библиотеку станд. для C++ 11.
Примечание: можно хотеть прочитать документацию функции повышения вместо Microsoft один, поскольку легче понять
Добавление краткой информации об ответе Фредрика Хедблада.
<DataGrid Name="DataGrid" LoadingRow="DataGrid_LoadingRow" ...
void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.Header = (e.Row.GetIndex()+1).ToString();
}
... Если вы хотите начать нумерацию с 1
И просто добавить к обсуждению этого ... (Я потратил слишком много времени, чтобы выяснить это!).
Вам необходимо установить для параметра EnableRowVirtualization значение False на сетке данных, чтобы предотвратить ошибки в последовательности строк:
EnableRowVirtualization="False"
Свойство EnableRowVirtualization
по умолчанию установлено в true
. Если для свойства EnableRowVirtualization
установлено значение true, DataGrid не создает экземпляр объекта DataGridRow
для каждого элемента данных в связанном источнике данных. Вместо этого DataGrid создает объекты DataGridRow только тогда, когда они необходимы, и использует их столько, сколько может. MSDN Ссылка здесь
После некоторых испытаний с RowHeaderStyle
отремонтированная и расширенная выборка из NGI:
<DataGrid EnableRowVirtualization="false" ItemsSource="{Binding ResultView}" AlternationCount="{Binding ResultView.Count}" RowHeaderWidth="10">
<DataGrid.RowHeaderStyle>
<Style TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Content" Value="{Binding Path=AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" />
</Style>
</DataGrid.RowHeaderStyle>
</DataGrid>