wpf datagrid 添加行号 显示

本文介绍如何在WPF应用中使用XAML的DataGrid控件为每行添加自增序号,并展示了如何通过绑定实现这一功能。同时提供了完整的XAML和C#代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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/archive/2013/03/01/2938824.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值