自定义DataGrid样式

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!--自定义DataGrid样式-->
    <Style x:Key="CustomDataGrid" TargetType="DataGrid">
        <Setter Property="SnapsToDevicePixels" Value="True"></Setter>
        <Setter Property="AutoGenerateColumns" Value="False"></Setter>
        <Setter Property="CanUserResizeRows" Value="False"></Setter>
        <Setter Property="CanUserAddRows" Value="False"></Setter>
        <Setter Property="SelectionMode" Value="Single"></Setter>
        <Setter Property="CanUserSortColumns" Value="True"></Setter>
        <Setter Property="HorizontalGridLinesBrush" Value="Gray"></Setter>
        <Setter Property="VerticalGridLinesBrush" Value="Gray"></Setter>
        <Setter Property="BorderBrush" Value="Gray"></Setter>
        <Setter Property="ColumnWidth" Value="auto"></Setter>
        <Setter Property="IsReadOnly" Value="True"></Setter>
        <Setter Property="RowHeight" Value="22"></Setter>
       

        <Setter Property="RowHeaderStyle">
            <Setter.Value>
                <Style x:Name="CustomDataGridRowHeader" TargetType="DataGridRowHeader">
                    <!--
                    <Setter Property="Background" Value="#DDD"/>
                    <Setter Property="Padding" Value="5,0,5,0"></Setter>
                    -->
                    <Setter Property="Width" Value="Auto"></Setter>
                    <Setter Property="MinWidth" Value="0"></Setter>
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="ColumnHeaderStyle">
            <Setter.Value>
                <Style x:Name="CustomDataGridColumnHeader" TargetType="DataGridColumnHeader">
                    <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
                    <Setter Property="VerticalContentAlignment" Value="Center"></Setter>
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="CellStyle">
            <Setter.Value>
                <Style x:Name="CustamDataGridCell" TargetType="DataGridCell">
                    <Setter Property="BorderThickness" Value="0"></Setter>
                </Style>
            </Setter.Value>
        </Setter>
    </Style>


    <!--设置DataGrid单元格垂直居中显示-->
    <Style x:Key="dgCellTextBlock" TargetType="TextBlock">
        <Setter Property="Padding" Value="2,3,2,0"></Setter>
        <Setter Property="TextAlignment" Value="Center"/>
    </Style>

    <!--设置DataGrid单元格数字靠右显示-->
    <Style x:Key="dgCellTextBlockRight" TargetType="TextBlock">
        <Setter Property="Padding" Value="2,3,3,0"></Setter>
        <Setter Property="TextAlignment" Value="Right"/>
    </Style>

    <Style x:Key="FQCustomDataGrid" TargetType="DataGrid">
        <Setter Property="BorderThickness" Value="0"></Setter>
        <Setter Property="BorderBrush" Value="Black"></Setter>
        <Setter Property="GridLinesVisibility" Value="None"></Setter>
        <Setter Property="SnapsToDevicePixels" Value="True"></Setter>
        <Setter Property="AutoGenerateColumns" Value="False"></Setter>
        <Setter Property="CanUserResizeRows" Value="False"></Setter>
        <Setter Property="CanUserAddRows" Value="False"></Setter>
        <Setter Property="SelectionMode" Value="Single"></Setter>
        <Setter Property="CanUserSortColumns" Value="False"></Setter>
        <Setter Property="ColumnWidth" Value="auto"></Setter>
        <Setter Property="IsReadOnly" Value="True"></Setter>
        <Setter Property="RowHeight" Value="22"></Setter>
        <Setter Property="HeadersVisibility" Value="Column"></Setter>
        <Setter Property="Background" Value="Black"></Setter>
        <Setter Property="RowHeaderStyle">
            <Setter.Value>
                <Style x:Name="FQCustomDataGridRowHeader" TargetType="DataGridRowHeader">
                   
                    <!--<Setter Property="Background" Value="Black"/>-->
                    <!--<Setter Property="Padding" Value="5,0,5,0"></Setter>-->
                   
                    <Setter Property="Width" Value="Auto"></Setter>
                    <Setter Property="MinWidth" Value="0"></Setter>
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="ColumnHeaderStyle">
            <Setter.Value>
                <Style x:Name="DataGridColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}"  >
                    <Setter Property="Height" Value="25"></Setter>
                    <Setter Property="Background" Value="Black" />
                    <Setter Property="Foreground" Value="White" />
                    <Style.Triggers>
                        <!--<Trigger Property="SortDirection" Value="{x:Null}">
                            <Setter Property="Background" Value="{DynamicResource DataGridHeaderBackgroundBrush}" />
                            <Setter Property="BorderBrush"  Value="Transparent" />
                        </Trigger>-->
                        <!--<MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" Value="True" />
                                <Condition Property="SortDirection" Value="{x:Null}" />
                            </MultiTrigger.Conditions>
                            <Setter Property="Background" Value="{StaticResource DataGridHeaderMouseOverBackgroundBrush}" />
                            <Setter Property="BorderBrush" Value="{StaticResource DataGridHeaderBorderBrush}" />
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" Value="true" />
                                <Condition Property="SortDirection" Value="{x:Null}" />
                            </MultiTrigger.Conditions>
                            <Setter Property="Background" Value="{StaticResource DataGridHeaderMouseOverBackgroundBrush}" />
                            <Setter Property="BorderBrush" Value="{StaticResource DataGridHeaderBorderBrush}" />
                        </MultiTrigger>-->
                        <Trigger Property="SortDirection" Value="Ascending">
                            <Setter Property="ContentTemplate">
                                <Setter.Value>
                                    <DataTemplate>
                                        <Grid x:Name="GridContentTemplate">
                                            <Label Background="Black" Foreground="White" Content="{TemplateBinding Content}"/>
                                            <Path x:Name="SortArrowUp" Visibility="Visible" Data="M0,0 L1,0 L0.5,1 z" Stretch="Fill"  Grid.Column="2" Width="8" Height="6" Fill="Red" Margin="0,0,50,0" VerticalAlignment="Center" RenderTransformOrigin="1,1" />
                                        </Grid>
                                    </DataTemplate>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                        <Trigger Property="SortDirection" Value="Descending">
                            <Setter Property="ContentTemplate">
                                <Setter.Value>
                                    <DataTemplate>
                                        <Grid x:Name="GridContentTemplate">
                                            <Label Background="Black" Foreground="White" Content="{TemplateBinding Content}"/>
                                            <Path x:Name="SortArrow" Visibility="Visible" Data="M0,0 L1,0 L0.5,1 z" Stretch="Fill"  Grid.Column="2" Width="8" Height="6" Fill="White" Margin="0,0,50,0" VerticalAlignment="Center" RenderTransformOrigin="1,1" />
                                        </Grid>
                                    </DataTemplate>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Setter.Value>
        </Setter>

        <!--<Setter Property="ColumnHeaderStyle">
            <Setter.Value>
                <Style x:Name="FQCustomDataGridColumnHeader" TargetType="DataGridColumnHeader">
                    <Setter Property="SnapsToDevicePixels" Value="True" />
                    <Setter Property="Padding" Value="5,0,5,0"></Setter>
                    <Setter Property="MinWidth" Value="0" />
                    <Setter Property="MinHeight" Value="28" />
                    <Setter Property="Foreground" Value="Green" />
                    <Setter Property="Background" Value="Black"/>
                    <Setter Property="FontSize" Value="14" />

                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Grid x:Name="GridContentTemplate">
                                    <Label Background="Black" Foreground="White" Content="{TemplateBinding Content}"/>
                                    <Path x:Name="SortArrow" Visibility="Collapsed" Data="M0,0 L1,0 L0.5,1 z" Stretch="Fill"  Grid.Column="2" Width="8" Height="6" Fill="White" Margin="0,0,50,0" VerticalAlignment="Center" RenderTransformOrigin="1,1" />
                                    <Path x:Name="SortArrowUp" Visibility="Collapsed" Data="M0,0 L1,0 L0.5,1 z" Stretch="Fill"  Grid.Column="2" Width="8" Height="6" Fill="Red" Margin="0,0,50,0" VerticalAlignment="Center" RenderTransformOrigin="1,1" />
                                </Grid>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                    <Style.Triggers>
                        <Trigger Property="SortDirection" Value="Descending">

                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Setter.Value>
        </Setter>-->

       
       
        <!--<Setter Property="ColumnHeaderStyle">
            <Setter.Value>
                <Style x:Name="FQCustomDataGridColumnHeader" TargetType="DataGridColumnHeader">
                    <Setter Property="SnapsToDevicePixels" Value="True" />
                    <Setter Property="Padding" Value="5,0,5,0"></Setter>
                    <Setter Property="MinWidth" Value="0" />
                    <Setter Property="MinHeight" Value="28" />
                    <Setter Property="Foreground" Value="Green" />
                    <Setter Property="Background" Value="Black"/>
                    <Setter Property="AllowDrop" Value="True"></Setter>
                    <Setter Property="Cursor" Value="Hand"></Setter>
                    <Setter Property="FontSize" Value="14" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="DataGridColumnHeader">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>
                                    <ContentPresenter  Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                    <Path x:Name="SortArrow" Visibility="Visible" Data="M0,0 L1,0 L0.5,1 z" Stretch="Fill"  Grid.Column="2" Width="8" Height="6" Fill="White" Margin="0,0,50,0"
                    VerticalAlignment="Center" RenderTransformOrigin="1,1" />
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Height" Value="25"/>
                </Style>
            </Setter.Value>
        </Setter>-->
        <Setter Property="CellStyle">
            <Setter.Value>
                <Style x:Name="FQCustamDataGridCell" TargetType="DataGridCell">
                    <Style.Setters>
                        <Setter Property="Background" Value="Black"/>
                        <Setter Property="Foreground" Value="Red"/>
                        <Setter Property="BorderThickness" Value="0"></Setter>
                    </Style.Setters>
                    <Style.Triggers>
                        <!--<Trigger Property="IsMouseOver" Value="True">
                            <Trigger.Setters>
                                <Setter Property="Background" Value="Gold"></Setter>
                            </Trigger.Setters>
                        </Trigger>-->
                        <Trigger Property="IsSelected" Value="True">
                            <Trigger.Setters>
                                <Setter Property="Background" Value="BlueViolet"></Setter>
                            </Trigger.Setters>
                        </Trigger>
                    </Style.Triggers>
                   
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="RowStyle">
            <Setter.Value>
                <Style TargetType="DataGridRow">
                    <Style.Setters>
                        <Setter Property="Background" Value="Black"/>
                    </Style.Setters>
                    <Style.Triggers>
                        <!--<Trigger Property="IsMouseOver" Value="True">
                            <Trigger.Setters>
                                <Setter Property="Background" Value="Gold"></Setter>
                            </Trigger.Setters>
                        </Trigger>-->
                        <Trigger Property="IsSelected" Value="True">
                            <Trigger.Setters>
                                <Setter Property="Background" Value="BlueViolet"></Setter>
                            </Trigger.Setters>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Setter.Value>
        </Setter>
      
    </Style>

    <Style x:Key="FQDataGridCellBase" TargetType="DataGridCell">
        <Style.Setters>
            <Setter Property="Background" Value="Black"/>
            <Setter Property="BorderThickness" Value="0"></Setter>
        </Style.Setters>
        <Style.Triggers>
            <!--<Trigger Property="IsMouseOver" Value="True">
                <Trigger.Setters>
                    <Setter Property="Background" Value="Gold"></Setter>
                </Trigger.Setters>
            </Trigger>-->
            <Trigger Property="IsSelected" Value="True">
                <Trigger.Setters>
                    <Setter Property="Background" Value="BlueViolet"></Setter>
                </Trigger.Setters>
            </Trigger>
        </Style.Triggers>
    </Style>
    <Style x:Key="FQDataGridRowBase" TargetType="DataGridRow">
        <Style.Setters>
            <Setter Property="Background" Value="Black"/>
        </Style.Setters>
        <Style.Triggers>
            <!--<Trigger Property="IsMouseOver" Value="True">
                            <Trigger.Setters>
                                <Setter Property="Background" Value="Gold"></Setter>
                            </Trigger.Setters>
                        </Trigger>-->
            <Trigger Property="IsSelected" Value="True">
                <Trigger.Setters>
                    <Setter Property="Background" Value="BlueViolet"></Setter>
                </Trigger.Setters>
            </Trigger>
        </Style.Triggers>
    </Style>

    <!--设置DataGrid单元格前景色Yellow-->
    <Style x:Key="dgCellTextBlockForegroundYellow" TargetType="TextBlock">
        <Setter Property="Foreground" Value="Yellow"></Setter>
    </Style>

    <!--设置DataGrid单元格前景色Yellow-->
    <Style x:Key="dgCellTextBlockForegroundWhite" TargetType="TextBlock">
        <Setter Property="Foreground" Value="White"></Setter>
    </Style>
</ResourceDictionary>

猜你喜欢

转载自jcair.iteye.com/blog/2222431