自定义DataGrid样式

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/Styles/SolidColorBrushStyles.xaml" />
        <ResourceDictionary Source="/Styles/ScrollBarStyles.xaml" />
    </ResourceDictionary.MergedDictionaries>
    <!--  DataGrid样式  -->
    <Style
        x:Key="DataGridRowStyle"
        TargetType="DataGridRow">
        <Style.Triggers>
            <!--  隔行换色  -->
            <Trigger Property="AlternationIndex" Value="0">
                <Setter Property="Background" Value="#FFFAFAFA" />
            </Trigger>
            <Trigger Property="AlternationIndex" Value="1">
                <Setter Property="Background" Value="{StaticResource AssistSolidColorBrushStyle7}" />
            </Trigger>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="{StaticResource PrimarySolidColorBrushStyle5}" />
                <Setter Property="Foreground" Value="White" />
                <Setter Property="VerticalContentAlignment" Value="Center" />
            </Trigger>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="{StaticResource PrimarySolidColorBrushStyle5}" />
                <Setter Property="Foreground" Value="White" />
            </Trigger>
        </Style.Triggers>
    </Style>
    <Style
        x:Key="DataGridCellStyle"
        TargetType="DataGridCell">
        <Setter Property="BorderThickness" Value="0" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="DataGridCell">
                    <TextBlock
                        VerticalAlignment="Center"
                        TextAlignment="Center">
                        <ContentPresenter />
                    </TextBlock>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Foreground" Value="White" />
            </Trigger>
        </Style.Triggers>
    </Style>
    <Style
        x:Key="DataGridColumnHeaderStyle"
        TargetType="DataGridColumnHeader">
        <Setter Property="Background" Value="{StaticResource PrimarySolidColorBrushStyle3}" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="Height" Value="50" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    </Style>
    <Style
        x:Key="WpDataGridStyle"
        BasedOn="{x:Null}"
        TargetType="DataGrid">
        <Setter Property="ColumnHeaderStyle" Value="{DynamicResource DataGridColumnHeaderStyle}" />
        <Setter Property="RowStyle" Value="{DynamicResource DataGridRowStyle}" />
        <Setter Property="CellStyle" Value="{DynamicResource DataGridCellStyle}" />
        <Setter Property="SelectionMode" Value="Single" />
        <Setter Property="SelectionUnit" Value="FullRow" />
        <Setter Property="IsReadOnly" Value="True" />
        <Setter Property="GridLinesVisibility" Value="All" />
        <Setter Property="CanUserAddRows" Value="False" />
        <Setter Property="RowHeight" Value="40" />
        <Setter Property="HeadersVisibility" Value="Column" />
        <Setter Property="AutoGenerateColumns" Value="False" />
        <Setter Property="CanUserSortColumns" Value="False" />
        <Setter Property="BorderThickness" Value="0" />
        <Setter Property="FontSize" Value="26" />
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="AlternationCount" Value="2" />
        <Setter Property="AlternatingRowBackground" Value="#F6F6F6 " />
        <Setter Property="HorizontalGridLinesBrush" Value="Transparent" />
        <Setter Property="VerticalGridLinesBrush" Value="Transparent" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="DataGrid">
                    <Border
                        Padding="{TemplateBinding Padding}"
                        Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        UseLayoutRounding="True">
                        <ScrollViewer Focusable="False">
                            <ScrollViewer.Resources>
                                <Style
                                    BasedOn="{StaticResource WpScrollBarStyle}"
                                    TargetType="ScrollBar" />
                            </ScrollViewer.Resources>
                            <ScrollViewer.Template>
                                <ControlTemplate TargetType="ScrollViewer">
                                    <Grid>
                                        <!--<Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="Auto" />
                                        </Grid.ColumnDefinitions>-->
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto" />
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="Auto" />
                                        </Grid.RowDefinitions>
                                        <DataGridColumnHeadersPresenter
                                            Name="PART_ColumnHeadersPresenter"
                                            Grid.Row="0">
                                            <DataGridColumnHeadersPresenter.Visibility>
                                                <Binding
                                                    Path="Visibility"
                                                    RelativeSource="{RelativeSource FindAncestor,
                                                                                    AncestorLevel=1,
                                                                                    AncestorType=DataGrid}">
                                                    <Binding.ConverterParameter>
                                                        <DataGridHeadersVisibility>Column</DataGridHeadersVisibility>
                                                    </Binding.ConverterParameter>
                                                </Binding>
                                            </DataGridColumnHeadersPresenter.Visibility>
                                        </DataGridColumnHeadersPresenter>
                                        <ScrollContentPresenter
                                            Name="PART_ScrollContentPresenter"
                                            Grid.Row="1"
                                            CanContentScroll="{TemplateBinding CanContentScroll}"
                                            CanHorizontallyScroll="False"
                                            CanVerticallyScroll="False"
                                            Content="{TemplateBinding Content}"
                                            ContentStringFormat="{TemplateBinding ContentStringFormat}"
                                            ContentTemplate="{TemplateBinding ContentTemplate}" />
                                        <ScrollBar
                                            x:Name="PART_VerticalScrollBar"
                                            Grid.Row="1"
                                            HorizontalAlignment="Right"
                                            Panel.ZIndex="1"
                                            Maximum="{TemplateBinding ScrollableHeight}"
                                            Orientation="Vertical"
                                            ViewportSize="{TemplateBinding ViewportHeight}"
                                            Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
                                            Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" />
                                        <ScrollBar
                                            x:Name="PART_HorizontalScrollBar"
                                            Grid.Row="2"
                                            Maximum="{TemplateBinding ScrollableWidth}"
                                            Orientation="Horizontal"
                                            ViewportSize="{TemplateBinding ViewportWidth}"
                                            Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
                                            Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" />
                                        <Grid.Triggers>
                                            <EventTrigger RoutedEvent="MouseWheel">
                                                <BeginStoryboard>
                                                    <Storyboard>
                                                        <DoubleAnimation
                                                            Storyboard.TargetName="PART_VerticalScrollBar"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="1"
                                                            Duration="0:0:0.5" />
                                                        <DoubleAnimation
                                                            BeginTime="0:0:1"
                                                            Storyboard.TargetName="PART_VerticalScrollBar"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="0.3"
                                                            Duration="0:0:0.5" />
                                                        <DoubleAnimation
                                                            Storyboard.TargetName="PART_HorizontalScrollBar"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="1"
                                                            Duration="0:0:0.5" />
                                                        <DoubleAnimation
                                                            BeginTime="0:0:1"
                                                            Storyboard.TargetName="PART_HorizontalScrollBar"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="0.1"
                                                            Duration="0:0:0.5" />
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </EventTrigger>
                                            <EventTrigger
                                                RoutedEvent="MouseEnter"
                                                SourceName="PART_VerticalScrollBar">
                                                <BeginStoryboard>
                                                    <Storyboard>
                                                        <DoubleAnimation
                                                            Storyboard.TargetName="PART_VerticalScrollBar"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="1"
                                                            Duration="0:0:1" />
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </EventTrigger>
                                            <EventTrigger
                                                RoutedEvent="MouseLeave"
                                                SourceName="PART_VerticalScrollBar">
                                                <BeginStoryboard>
                                                    <Storyboard>
                                                        <DoubleAnimation
                                                            Storyboard.TargetName="PART_VerticalScrollBar"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="0.2"
                                                            Duration="0:0:1" />
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </EventTrigger>
                                            <EventTrigger
                                                RoutedEvent="MouseEnter"
                                                SourceName="PART_HorizontalScrollBar">
                                                <BeginStoryboard>
                                                    <Storyboard>
                                                        <DoubleAnimation
                                                            Storyboard.TargetName="PART_HorizontalScrollBar"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="1"
                                                            Duration="0:0:1" />
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </EventTrigger>
                                            <EventTrigger
                                                RoutedEvent="MouseLeave"
                                                SourceName="PART_HorizontalScrollBar">
                                                <BeginStoryboard>
                                                    <Storyboard>
                                                        <DoubleAnimation
                                                            Storyboard.TargetName="PART_HorizontalScrollBar"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="0.2"
                                                            Duration="0:0:1" />
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </EventTrigger>
                                        </Grid.Triggers>
                                    </Grid>
                                </ControlTemplate>
                            </ScrollViewer.Template>
                            <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                        </ScrollViewer>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值