自定义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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF自定义DataGrid控件是通过继承现有的DataGrid类,并在其基础上进行修改和扩展来实现的。 自定义DataGrid控件的步骤如下: 1. 创建一个自定义的类,继承自DataGrid。例如,可以命名为CustomDataGrid。 2. 在CustomDataGrid类中,可以添加额外的属性、依赖属性或附加属性,用于自定义DataGrid控件的特定行为或外观。 3. 重写或扩展DataGrid的现有方法、事件和样式,以满足自定义需求。例如,可以重写OnApplyTemplate()方法以应用自定义样式。 4. 根据需要,可以添加新的功能或控件,例如自定义列、单元格、行、排序、筛选、分页等等。 5. 在CustomDataGrid类中,可以通过编写自定义的模板(Template)来修改DataGrid的外观。例如,可以通过修改DataGrid的ControlTemplate来改变整个DataGrid的显示风格。 6. 编写完自定义类后,可以在XAML中使用自定义DataGrid控件,通过添加命名空间引用并将CustomDataGrid作为一个控件使用。可以设置自定义属性、事件和样式,达到期望的效果。 通过自定义DataGrid控件,可以根据实际需求对其进行扩展和修改,以满足特定的业务需求。由于WPF提供了强大的样式、模板和继承机制,因此可以轻松地自定义DataGrid控件,并且可以实现高度的灵活性和可扩展性。这样,可以根据项目的需求和用户的喜好来创建独特的、具有个性化的DataGrid控件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值