wpf datagrid 添加行号 显示

xaml页  可以在行号的列头 上加 序号

<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" FontSize="14" RowHeaderWidth="40"
SelectionMode="Single" CanUserAddRows="False" ItemsSource="{Binding}" LoadingRow="dataGridBook_LoadingRow">
 <DataGrid.Resources>
<!--Control colors.-->
<Color x:Key="ControlLightColor">White</Color>
 <Color x:Key="ControlMediumColor">#FF7381F9</Color>
 <Color x:Key="GlyphColor">#FF444444</Color>
 <Color x:Key="BorderLightColor">#FFCCCCCC</Color>
 <Color x:Key="BorderMediumColor">#FF888888</Color>
 <Color x:Key="ControlMouseOverColor">#FF3843C4</Color>
 <Color x:Key="ControlPressedColor">#FF211AA9</Color>

 <Style TargetType="{x:Type Button}"
x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle,
TypeInTargetAssembly={x:Type DataGrid}}">
 <Setter Property="Template">
 <Setter.Value>
 <ControlTemplate TargetType="{x:Type Button}">
 <Grid>
 <VisualStateManager.VisualStateGroups>
 <VisualStateGroup x:Name="CommonStates">
 <VisualState x:Name="Normal" />
 <VisualState x:Name="MouseOver">
 <Storyboard>
 <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
 <EasingColorKeyFrame KeyTime="0"
Value="{StaticResource ControlMouseOverColor}" />
 </ColorAnimationUsingKeyFrames>
 </Storyboard>
 </VisualState>
 <VisualState x:Name="Pressed">
 <Storyboard>
 <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
 <EasingColorKeyFrame KeyTime="0"
Value="{StaticResource ControlPressedColor}" />
 </ColorAnimationUsingKeyFrames>
 </Storyboard>
 </VisualState>
 <VisualState x:Name="Disabled">
 <Storyboard>
 <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)"
Storyboard.TargetName="Arrow">
 <DiscreteObjectKeyFrame KeyTime="0"
Value="{x:Static Visibility.Collapsed}" />
 </ObjectAnimationUsingKeyFrames>
 </Storyboard>
 </VisualState>
 </VisualStateGroup>
 </VisualStateManager.VisualStateGroups>
 <Rectangle x:Name="Border" SnapsToDevicePixels="True">
 <Rectangle.Stroke>
 <LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
 <GradientStop Color="{DynamicResource BorderLightColor}"
Offset="0" />
 <GradientStop Color="{DynamicResource BorderMediumColor}"
Offset="1" />
 </LinearGradientBrush>
 </Rectangle.Stroke>
 <Rectangle.Fill>
 <LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
 <GradientStop Color="{DynamicResource ControlLightColor}"
Offset="0" />
 <GradientStop Color="{DynamicResource ControlMediumColor}"
Offset="1" />
 </LinearGradientBrush>
 </Rectangle.Fill>
 </Rectangle>
 <Polygon x:Name="Arrow"
HorizontalAlignment="Right"
Margin="8,8,3,3"
Opacity="0.15"
Points="0,10 10,10 10,0"
Stretch="Uniform"
VerticalAlignment="Bottom">
 <Polygon.Fill>
 <SolidColorBrush Color="{DynamicResource GlyphColor}" />
 </Polygon.Fill>
 </Polygon>
 <TextBlock Text="序号" VerticalAlignment="Center" HorizontalAlignment="Center" ></TextBlock>
 </Grid>
 </ControlTemplate>
 </Setter.Value>
 </Setter>
 </Style>
 </DataGrid.Resources>
 <DataGrid.RowHeaderTemplate>

 <DataTemplate>
 <TextBlock HorizontalAlignment="Center" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}}, Path=Header}">
 </TextBlock>
 </DataTemplate>
 </DataGrid.RowHeaderTemplate>
 <DataGrid.Columns>

 <DataGridTemplateColumn>
 <DataGridTemplateColumn.Header>
 <CheckBox Content="全 选" x:Name="cBox_All_book" Click="cBox_All_book_Click"></CheckBox>
 </DataGridTemplateColumn.Header>

 <DataGridTemplateColumn.CellTemplate>
 <DataTemplate>
 <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsChecked="{Binding Path=IsChecked,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></CheckBox>
 </DataTemplate>
 </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>
 <DataGridTextColumn Header="页" Binding="{Binding bookValueGrid}" MinWidth="120" IsReadOnly="True" ></DataGridTextColumn>



 </DataGrid.Columns>
</DataGrid>

.cs文件

private void dataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
 {
 e.Row.Header = e.Row.GetIndex() + 1;
 }

显示结果

image

原文地址:https://www.cnblogs.com/z_lb/p/2938824.html