На данный момент я использую следующий код, который вызывает мой преобразователь, который делает это за меня, помещая номер строки, который мне нужен.
<DataGridTextColumn Header="NO" Width="22" IsReadOnly="True" x:Name="rowNumber">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontSize" Value="10" />
<Setter Property="Margin" Value="0"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.Binding>
<MultiBinding Converter="{StaticResource rowNumberConverter}">
<Binding />
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}" />
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
И конвертер:
class RowNumberConverter : IMultiValueConverter
{
#region IMultiValueConverter Members
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//get the grid and the item
Object item = values[0];
DataGrid grid = values[1] as DataGrid;
int index = grid.Items.IndexOf(item) + 1 ;
return index.ToString().PadLeft(2, '0');
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Однако это не соответствует нашему новому требованию — нумерации страниц. Этот преобразователь, конечно, не будет продолжать подсчет, поскольку он ссылается только на строки в DataGrid.
Может ли кто-нибудь указать мне, как сделать так, чтобы количество строк продолжалось на следующей странице? Необходимо придерживаться чистого шаблона MVVM.
Спасибо за вашу помощь.
DataGrid.ItemsSource
илиDataGrid.Items
вместо всегоDataGrid
. - person Sheridan   schedule 07.01.2014