SILVERLIGHT datagrid 技巧

本文介绍了如何在Silverlight中为datagrid设置样式,包括文字居中、列头样式的实现,如通过样式文件设定单元格和列头的字体大小、颜色、对齐方式等,以及使用VisualStateManager来管理不同状态下的视觉效果。

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

(一)文字居中:

 

样式文件:<ResourceDictionary

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:Primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"

xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"

xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"

  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

   mc:Ignorable="d">

<SolidColorBrush x:Key="lineColor" Color="#FFFF6500"/>

   

<!-- Resource dictionary entries should be defined here. -->

<Style x:Key="DataGridHeaderStyle" TargetType="Primitives:DataGridColumnHeader">

                <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>

                <Setter Property="FontSize" Value="14.667"/>

                <Setter Property="SeparatorBrush" Value="{StaticResource lineColor}"/>

                <Setter Property="Background" Value="{StaticResource lineColor}"/>

                <Setter Property="BorderBrush" Value="{StaticResource lineColor}"/>

<Setter Property="FontWeight" Value="Bold" />

 

      </Style>

    <Style x:Key="DataGridCellStyle" TargetType="data:DataGridCell">

                <Setter Property="HorizontalContentAlignment" Value="Center" ></Setter>

                <Setter Property="FontSize" Value="14.667"/>

 

 </Style>

 

引用样式:

<local:AutoFillDataGrid AutoGenerateColumns="False"  x:Name="DataGrid1" GridLinesVisibility="All" CellStyle="{StaticResource DataGridCellStyle}"    RowDetailsVisibilityMode="VisibleWhenSelected" Height="336" ColumnHeaderStyle="{StaticResource DataGridHeaderStyle}" HorizontalGridLinesBrush="{StaticResource lineColor}" VerticalGridLinesBrush="{StaticResource lineColor}" BorderBrush="{StaticResource lineColor}" RowBackground="#33C3FF00">

 

(二)列头样式

 

<ResourceDictionary

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"

xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"

  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

  xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"

   mc:Ignorable="d">

<SolidColorBrush x:Key="lineColor" Color="#FFFF6500"/>

   

<!-- Resource dictionary entries should be defined here. -->

 

    <Style x:Key="DataGridCellStyle" TargetType="data:DataGridCell">

                <Setter Property="HorizontalContentAlignment" Value="Center" ></Setter>

                <Setter Property="FontSize" Value="14.667"/>

 

            </Style>

    <Style x:Key="DataGridColumnHeaderStyle1" TargetType="sdk:DataGridColumnHeader">

     <Setter Property="HorizontalContentAlignment" Value="Center"/>

     <Setter Property="FontSize" Value="14.667"/>

     <Setter Property="SeparatorBrush" Value="{StaticResource lineColor}"/>

     <Setter Property="Background" Value="{StaticResource lineColor}"/>

     <Setter Property="BorderBrush" Value="{StaticResource lineColor}"/>

     <Setter Property="FontWeight" Value="Bold" />

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="sdk:DataGridColumnHeader">

<Grid x:Name="Root">

<Grid.ColumnDefinitions>

<ColumnDefinition/>

<ColumnDefinition Width="Auto"/>

</Grid.ColumnDefinitions>

<vsm:VisualStateManager.VisualStateGroups>

<vsm:VisualStateGroup x:Name="CommonStates">

<vsm:VisualStateGroup.Transitions>

<vsm:VisualTransition GeneratedDuration="00:00:0.1"/>

</vsm:VisualStateGroup.Transitions>

<vsm:VisualState x:Name="Normal"/>

<vsm:VisualState x:Name="MouseOver">

<Storyboard>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Fill).Color" To="#FF448DCA"/>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[3].Color" To="#7FFFFFFF"/>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[2].Color" To="#CCFFFFFF"/>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[1].Color" To="#F2FFFFFF"/>

</Storyboard>

</vsm:VisualState>

<vsm:VisualState x:Name="Pressed">

<Storyboard>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Fill).Color" To="#FF448DCA"/>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[0].Color" To="#D8FFFFFF"/>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[1].Color" To="#C6FFFFFF"/>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[2].Color" To="#8CFFFFFF"/>

<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[3].Color" To="#3FFFFFFF"/>

</Storyboard>

</vsm:VisualState>

</vsm:VisualStateGroup>

<vsm:VisualStateGroup x:Name="SortStates">

<vsm:VisualStateGroup.Transitions>

<vsm:VisualTransition GeneratedDuration="00:00:0.1"/>

</vsm:VisualStateGroup.Transitions>

<vsm:VisualState x:Name="Unsorted"/>

<vsm:VisualState x:Name="SortAscending">

<Storyboard>

<DoubleAnimation Duration="0" Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" To="1.0"/>

</Storyboard>

</vsm:VisualState>

<vsm:VisualState x:Name="SortDescending">

<Storyboard>

<DoubleAnimation Duration="0" Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" To="1.0"/>

<DoubleAnimation Duration="0" Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="(RenderTransform).ScaleY" To="-.9"/>

</Storyboard>

</vsm:VisualState>

</vsm:VisualStateGroup>

</vsm:VisualStateManager.VisualStateGroups>

<Rectangle x:Name="BackgroundRectangle" Fill="#FF1F3B53" Stretch="Fill" Grid.ColumnSpan="2" d:IsHidden="True"/>

<Rectangle x:Name="BackgroundGradient" Stretch="Fill" Grid.ColumnSpan="2">

<Rectangle.Fill>

<LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0">

<GradientStop Color="#FFE4F37C" Offset="0.015"/>

<GradientStop Color="#FFE4F37C" Offset="0.894"/>

<GradientStop Color="#FFFF2601" Offset="0.919"/>

<GradientStop Color="#FFFF2500" Offset="1"/>

</LinearGradientBrush>

</Rectangle.Fill>

</Rectangle>

<Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">

<Grid.ColumnDefinitions>

<ColumnDefinition/>

<ColumnDefinition Width="Auto"/>

</Grid.ColumnDefinitions>

<ContentPresenter Cursor="{TemplateBinding Cursor}" Content="{TemplateBinding Content}"/>

<Path x:Name="SortIcon" Fill="#FF444444" Stretch="Uniform" HorizontalAlignment="Left" Margin="4,0,0,0" VerticalAlignment="Center" Width="8" Opacity="0" RenderTransformOrigin=".5,.5" Grid.Column="1" Data="F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z ">

<Path.RenderTransform>

<ScaleTransform ScaleX=".9" ScaleY=".9"/>

</Path.RenderTransform>

</Path>

</Grid>

<Rectangle x:Name="VerticalSeparator" Fill="{TemplateBinding SeparatorBrush}" VerticalAlignment="Stretch" Width="1" Visibility="{TemplateBinding SeparatorVisibility}" Grid.Column="1"/>

</Grid>

</ControlTemplate>

</Setter.Value>

</Setter>

 

    </Style>

 

 

</ResourceDictionary>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值