WPF-Datagrid常用

发布时间 2023-07-17 09:55:35作者: 包子789654

列标题居中和单元格内容居中

 

        <!--DataGrid 列标题居中方法-->
        <Style x:Key="ColumnHeaderStyle" TargetType="DataGridColumnHeader">
            <Setter Property="HorizontalContentAlignment"  Value="Center"/>
            <Setter Property="Background"  Value="Gray"/>
            <Setter Property="Foreground"  Value="White"/>
        </Style>

        <!--DataGrid单元格内容居中-->
        <Style x:Key="DataGridCellStyle" TargetType="DataGridCell">
            <Setter Property="HorizontalAlignment" Value="Center"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>

        <colorConverter:StringToColorConverter x:Key="DataGridColorConverter"/>

 

常用样式

        <!-- 列头标题栏样式 -->
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="Background" Value="Gray"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="BorderThickness" Value="1" />
            <Setter Property="BorderBrush" Value="Gray" />
            <Setter Property="Height" Value="30"/>
            <Setter Property="FontSize" Value="12"/>
        </Style>
        <!-- 单元格样式 -->
        <Style TargetType="DataGridCell">
            <Setter Property="FocusVisualStyle" Value="{x:Null}" />
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="BorderBrush" Value="Gray" />
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type DataGridCell}">
                        <Grid Background="{TemplateBinding Background}" >
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style TargetType="TextBlock" x:Key="centerAlignmentStyle">
            <Setter Property="Foreground" Value="Black"/>
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="HorizontalAlignment" Value="Center"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="TextWrapping" Value="Wrap"/>
        </Style>

        <!--背景色改变必须先设置cellStyle 因为cellStyle会覆盖rowStyle样式,换行换色-->
        <Style TargetType="DataGridRow">
            <Setter Property="Height" Value="30"/>
            <Style.Triggers>
                <Trigger Property="AlternationIndex" Value="0">
                    <!--单元格背景色-->
                    <Setter Property="Background" Value="White" />
                    <!--ffe14d-->
                </Trigger>
                <Trigger Property="AlternationIndex" Value="1">
                    <!--<Setter Property="Background" Value="#f2f2f2" />-->
                    <Setter Property="Background" Value="Blue" />
                    <!--f1ef9f-->
                </Trigger>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="#f1ef9f" />
                </Trigger>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="#05c4ff"/>
                </Trigger>
                <Trigger Property="IsFocused" Value="True">
                    <Setter Property="Background" Value="#05c4ff"/>
                </Trigger>
            </Style.Triggers>
        </Style>

        <!--网格线颜色-->
        <Style TargetType="DataGrid">
            <!--该属性指示是否允许用户调整列宽度-->
            <Setter Property="CanUserResizeColumns"   Value="false" />
            <!--<Setter Property="Background"   Value="#2d323c" />-->
            <Setter Property="Background"   Value="White" />
            <Setter Property="BorderBrush"   Value="Gray" />
            <Setter Property="SelectionUnit"   Value="FullRow" />
            <Setter Property="VerticalScrollBarVisibility"   Value="Auto" />
            <Setter Property="HorizontalScrollBarVisibility"   Value="Auto" />
            <Setter Property="RowHeaderWidth"   Value="0" />
            <Setter Property="HorizontalGridLinesBrush">
                <Setter.Value>
                    <SolidColorBrush Color="#d6c79b" />
                </Setter.Value>
            </Setter>
            <Setter Property="VerticalGridLinesBrush">
                <Setter.Value>
                    <SolidColorBrush Color="#d6c79b" />
                </Setter.Value>
            </Setter>
        </Style>

每一行添加序号

1,在XAML页面中的DataGrid中添加一列

 <DataGridTextColumn Header="序号" Width="*" Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}}, Path=Header}"  CellStyle="{StaticResource DataGridCellStyle}"/>

2,在DataGrid上添加一个LoadingRow事件,该事件的处理方法如下

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