找回密码
 立即注册

QQ登录

只需一步,快速开始

feiyan0320

中级会员

17

主题

70

帖子

615

积分

中级会员

积分
615

活字格认证微信认证勋章

QQ
feiyan0320
中级会员   /  发表于:2015-7-20 23:29  /   查看:6214  /  回复:1
  • 因为第一次使用c1 for wpf的FlexGrid和DataGrid控件,所以有很多地方不太熟悉,在社区里请教了无数次alice版主,在此表示由衷的感谢!

  • DataGrid及FlexGrid区别以及选择:
    DataGrid以及FlexGrid都可以做到列标题合并,都可以做到合计。
    不同之处,泛泛而言,FlexGrid小巧灵活、不限于绑定亦可后台灵活操作;DataGrid基于Wpf原有DataGrid,基于绑定。
    两个控件的应用场景可以参考中文官网。
    C1FlexGrid:   http://www.gcpowertools.com.cn/p ... onewpf/flexgrid.htm
    C1DataGrid: http://www.gcpowertools.com.cn/p ... onewpf/datagrid.htm
    两个component美国论坛里的2个链接:
    http://our.componentone.com/grou ... is-more-performant/
    http://our.componentone.com/grou ... exgrid-or-datagrid/

  • 列标题合并及冻结:
    DataGrid以及FlexGrid都可以做到列标题合并,但合并的方式不同(也许我仅知道这些方式)
    DataGrid合并:
    1. <c1:DataGridRowHeaderColumn  Header="[生产厂区, 基本信息, 基本信息]"
    2.                                        Width="Auto"   />
    3.                 <c1:DataGridRowHeaderColumn Header="[生产厂区,生产设备, 生产机长]"
    4.                                        Width="Auto"   />
    5.                 <c1:DataGridRowHeaderColumn Header="[生产厂区,生产设备, 生产机台]"
    6.                                        Width="Auto"   />
    7.                 <c1:DataGridRowHeaderColumn  Header="[目标产量, 目标产量, 目标产量]"
    8.                                        Width="Auto"  />
    9.                 <!-- First two columns must be headers, put several headers using this custom syntax-->
    10.                 <c1:DataGridTextColumn Header="[Country, Continent, 1]" />
    11.                 <c1:DataGridTextColumn Header="[Country, Name, 1]"  />
    复制代码

                
    在后台代码中具体代码参见:


    以上示例为版主Alice所做,如果遇到全部或者部分没有合并的时候,注意一下代码:
    1. // save headers rows and columns for later
    2.             _headerRowColumns = grid.Columns.Take(3).ToArray();
    3.             _headerColumnRows = grid.TopRows.Take(3).ToArray();
    复制代码


    FlexGrid合并:
    1. FlexGrid.ColumnHeaders.Rows.Add(new Row());

    2.             FlexGrid.ColumnHeaders.Rows.Add(new Row());

    3.             FlexGrid.ColumnHeaders.Rows[0][0] = "生产厂区";

    4.             FlexGrid.ColumnHeaders.Rows[1][0] = "生产厂区";

    5.             FlexGrid.ColumnHeaders.Rows[2][0] = "生产厂区";

    6.             FlexGrid.ColumnHeaders.Columns[0].AllowMerging = true;

    7.             FlexGrid.AllowMerging = AllowMerging.All;

    复制代码


    其中冻结列,只有DataGrid有可拖动的冻结分割线,如下图:



  • 合计:
    DataGrid:
    1. <c1:DataGridBoundColumn Header="开机天数" Binding="{Binding 开机天数}">

    2.                     <c1:DataGridAggregate.AggregateFunctions>

    3.                         <c1:DataGridAggregatesCollection>

    4.                             <c1:DataGridAggregateSum   ></c1:DataGridAggregateSum>

    5.                         </c1:DataGridAggregatesCollection>

    6.                         </c1:DataGridAggregate.AggregateFunctions>

    7.                 </c1:DataGridBoundColumn>

    复制代码

    以上合计的格式无需特殊设置,会根据列的格式而随之而变。如果想加字符,可以ResultFormat="合计= {0}" ;

    FlexGrid:
    1. <c1:C1FlexGrid.ColumnFooterRows>
    2.                 <c1:GroupRow   FontWeight="Bold" FontSize="16" />
    3.             </c1:C1FlexGrid.ColumnFooterRows>
    复制代码



  • 设置columnheader列头为透明色的问题。
    由于backgroud 使用了C1brushbuilder,只能把整个DataGridColumnHeaderPresenter重写来实现透明的效果。具体代码如下(或者直接运行3中提到的示例即可):
    1. <c1:C1DataGrid.ColumnHeaderStyle>
    2.                 <Style TargetType="c1:DataGridColumnHeaderPresenter">
    3.                     <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    4.                     <Setter Property="VerticalContentAlignment" Value="Stretch" />
    5.                     <Setter Property="BorderThickness" Value="0 0 1 1" />
    6.                     <Setter Property="Background" Value="Transparent"/>
    7.                     <Setter Property="Template">
    8.                         <Setter.Value>
    9.                             <ControlTemplate TargetType="c1:DataGridColumnHeaderPresenter">
    10.                                 <Grid x:Name="RootElement">
    11.                                     <Grid.Resources>
    12.                                         <Color x:Key="BaseColor">#FFD1DCE8</Color>
    13.                                         <SolidColorBrush x:Key="BaseColorBrush" Color="{StaticResource BaseColor}" />
    14.                                         <!-- Color &amp; Brush used to build brushes on MouseOver state -->
    15.                                         <Color x:Key="MouseOverColor">#FFBFE1EA</Color>
    16.                                         <SolidColorBrush x:Key="MouseOverBrush" Color="{StaticResource MouseOverColor}" />

    17.                                         <!-- Color &amp; Brush used to build brushes on Pressed and Checked states -->
    18.                                         <Color x:Key="SelectedColor">#FF8ED1E2</Color>
    19.                                         <SolidColorBrush x:Key="SelectedBackground" Color="{StaticResource SelectedColor}" />

    20.                                         <!-- Brush used to build brushes on Focused states -->
    21.                                         <SolidColorBrush x:Key="FocusBrush" Color="{StaticResource SelectedColor}" />

    22.                                         <!-- Color &amp; Brush @ general borders -->
    23.                                         <Color x:Key="BorderColor">#FFA4AFBA</Color>
    24.                                         <!-- Brush @ general borders -->
    25.                                         <SolidColorBrush x:Key="BorderBrush" Color="{StaticResource BorderColor}" />

    26.                                         <!-- Color &amp; Brush @ general foreground -->
    27.                                         <Color x:Key="ForegroundColor">Black</Color>
    28.                                         <SolidColorBrush x:Key="ForegroundBrushColor" Color="{StaticResource ForegroundColor}" />

    29.                                         <!-- Color &amp; Brush @ TextBox foreground -->
    30.                                         <Color x:Key="ForegroundTextBoxColor">Black</Color>
    31.                                         <SolidColorBrush x:Key="ForegroundTextBoxBrushColor" Color="{StaticResource ForegroundTextBoxColor}" />

    32.                                         <LinearGradientBrush x:Key="DataGridColumnHeaderBrush" StartPoint="0.5,0" EndPoint="0.5,1">
    33.                                             <GradientStop Color="#FFEFF3F7" Offset="0" />
    34.                                             <GradientStop Color="#FFE6ECF3" Offset="0.5" />
    35.                                             <GradientStop Color="#FFD3DEEA" Offset="0.5" />
    36.                                             <GradientStop Color="#FFC4D2E2" Offset="1" />
    37.                                         </LinearGradientBrush>
    38.                                         <LinearGradientBrush x:Key="DataGridColumnHeaderOverBrush" StartPoint="0.5,0" EndPoint="0.5,1">
    39.                                             <GradientStop Color="#FFEDF6F9" Offset="0" />
    40.                                             <GradientStop Color="#FFE4F2F6" Offset="0.5" />
    41.                                             <GradientStop Color="#FFD2E9F0" Offset="0.5" />
    42.                                             <GradientStop Color="#FFC0E0EA" Offset="1" />
    43.                                         </LinearGradientBrush>
    44.                                         <LinearGradientBrush x:Key="DataGridColumnHeaderSelectedBackground" StartPoint="0.5,0" EndPoint="0.5,1">
    45.                                             <GradientStop Color="#FFA6D9E7" Offset="0" />
    46.                                             <GradientStop Color="#FFA6D9E7" Offset="0.5" />
    47.                                             <GradientStop Color="#FF93D1E2" Offset="0.5" />
    48.                                             <GradientStop Color="#FF7BC7DC" Offset="1" />
    49.                                         </LinearGradientBrush>
    50.                                         <!-- Brush @ C1DataGrid ColumnHeader Sort Icon Background-->
    51.                                         <SolidColorBrush x:Key="DataGridColumnHeaderSortBrush" Color="#FF5E5E5E" />
    52.                                         <!-- Style @ C1DataGrid ColumnHeader Sort Icon -->
    53.                                         <Style x:Key="DataGridColumnHeaderSortArrowStyle" TargetType="Path">
    54.                                             <Setter Property="Height" Value="4" />
    55.                                             <Setter Property="Width" Value="7" />
    56.                                             <Setter Property="VerticalAlignment" Value="Top" />
    57.                                             <Setter Property="HorizontalAlignment" Value="Center" />
    58.                                             <Setter Property="Margin" Value="0,0.5,0,0" />
    59.                                             <Setter Property="Visibility" Value="Collapsed" />
    60.                                         </Style>

    61.                                         <!-- Sort ToggleButton @ C1DataGrid ColumnHeader -->
    62.                                         <Style x:Key="DataGridColumnHeaderSortTButtonStyle" TargetType="ToggleButton">
    63.                                             <Setter Property="Padding" Value="3" />
    64.                                             <Setter Property="Template">
    65.                                                 <Setter.Value>
    66.                                                     <ControlTemplate TargetType="ToggleButton">
    67.                                                         <Grid>
    68.                                                             <VisualStateManager.VisualStateGroups>
    69.                                                                 <VisualStateGroup x:Name="CommonStates">
    70.                                                                     <VisualState x:Name="Normal" />
    71.                                                                     <VisualState x:Name="MouseOver" />
    72.                                                                     <VisualState x:Name="Pressed" />
    73.                                                                     <VisualState x:Name="Disabled" />
    74.                                                                 </VisualStateGroup>
    75.                                                                 <VisualStateGroup x:Name="CheckStates">
    76.                                                                     <VisualState x:Name="Indeterminate" />
    77.                                                                     <VisualState x:Name="Checked">
    78.                                                                         <Storyboard>
    79.                                                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SortbyElement" Storyboard.TargetProperty="(UIElement.Visibility)" Duration="0">
    80.                                                                                 <DiscreteObjectKeyFrame KeyTime="00:00:00">
    81.                                                                                     <DiscreteObjectKeyFrame.Value>
    82.                                                                                         <Visibility>Visible</Visibility>
    83.                                                                                     </DiscreteObjectKeyFrame.Value>
    84.                                                                                 </DiscreteObjectKeyFrame>
    85.                                                                             </ObjectAnimationUsingKeyFrames>
    86.                                                                         </Storyboard>
    87.                                                                     </VisualState>
    88.                                                                     <VisualState x:Name="Unchecked">
    89.                                                                         <Storyboard>
    90.                                                                             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="SortbyElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
    91.                                                                                 <SplineDoubleKeyFrame KeyTime="00:00:00" Value="180" />
    92.                                                                             </DoubleAnimationUsingKeyFrames>
    93.                                                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SortbyElement" Storyboard.TargetProperty="(UIElement.Visibility)" Duration="0">
    94.                                                                                 <DiscreteObjectKeyFrame KeyTime="00:00:00">
    95.                                                                                     <DiscreteObjectKeyFrame.Value>
    96.                                                                                         <Visibility>Visible</Visibility>
    97.                                                                                     </DiscreteObjectKeyFrame.Value>
    98.                                                                                 </DiscreteObjectKeyFrame>
    99.                                                                             </ObjectAnimationUsingKeyFrames>
    100.                                                                         </Storyboard>
    101.                                                                     </VisualState>
    102.                                                                 </VisualStateGroup>
    103.                                                                 <VisualStateGroup x:Name="FocusStates">
    104.                                                                     <VisualState x:Name="Focused" />
    105.                                                                     <VisualState x:Name="Unfocused" />
    106.                                                                 </VisualStateGroup>
    107.                                                             </VisualStateManager.VisualStateGroups>
    108.                                                             <c1:C1BrushBuilder x:Name="SortbyElementBrush" Input="{TemplateBinding Foreground}" DesignBrush="{StaticResource DataGridColumnHeaderSortBrush}" DesignColor="{StaticResource ForegroundColor}" />
    109.                                                             <Path x:Name="SortbyElement" Data="M0,0 L7,0 L3.5,4 L3.5,4 z" Fill="{Binding Output, ElementName=SortbyElementBrush}" Style="{StaticResource DataGridColumnHeaderSortArrowStyle}" Stretch="None" RenderTransformOrigin="0.5,0.5" Grid.Row="1" Opacity="0.6">
    110.                                                                 <Path.RenderTransform>
    111.                                                                     <TransformGroup>
    112.                                                                         <ScaleTransform />
    113.                                                                         <SkewTransform />
    114.                                                                         <RotateTransform />
    115.                                                                         <TranslateTransform />
    116.                                                                     </TransformGroup>
    117.                                                                 </Path.RenderTransform>
    118.                                                             </Path>
    119.                                                         </Grid>
    120.                                                     </ControlTemplate>
    121.                                                 </Setter.Value>
    122.                                             </Setter>
    123.                                         </Style>

    124.                                         <!-- Brush @ C1DataGrid ColumnHeader Icon Background -->
    125.                                         <SolidColorBrush x:Key="DataGridColumnHeaderIconBrush" Color="#FF5E5E5E" />
    126.                                         <!-- Brush @ C1DataGrid ColumnHeader Icon Border -->
    127.                                         <LinearGradientBrush x:Key="DataGridColumnHeaderIconBorderBrush" EndPoint="1,0" StartPoint="0,0">
    128.                                             <GradientStop Color="#FF333333" Offset="0" />
    129.                                             <GradientStop Color="#FF222222" Offset="0.496" />
    130.                                             <GradientStop Color="#FF3B3B3B" Offset="0.5" />
    131.                                             <GradientStop Color="#FF3B3B3B" Offset="1" />
    132.                                         </LinearGradientBrush>
    133.                                         <!-- Brush used to build brushes on MouseOver state -->
    134.                                         <SolidColorBrush x:Key="DataGridMouseOverBrush" Color="#99BFE5EA" />

    135.                                         <!-- Brush used to build brushes on Pressed, Checked and Focused states -->
    136.                                         <SolidColorBrush x:Key="DataGridSelectedBackground" Color="#CC8ED1E2" />

    137.                                         <!-- Brush @ C1DataGrid ColumnHeader Merging Background -->
    138.                                         <SolidColorBrush x:Key="DataGridColumnHeaderMergingBrush" Color="#FFE3EAF1" />
    139.                                         <!-- Brush @ C1DataGrid ColumnHeader Merging Background on MouseOver-->
    140.                                         <SolidColorBrush x:Key="DataGridColumnHeaderMergingOverBrush" Color="#FFC6EBF4" />
    141.                                         <!-- Brush @ C1DataGrid ColumnHeader Merging Selected Background-->
    142.                                         <SolidColorBrush x:Key="DataGridColumnHeaderMergingSelectedBrush" Color="#FFA4DEED" />

    143.                                         <!-- Brush @ C1DataGrid Main PanelBackground -->
    144.                                         <SolidColorBrush x:Key="DataGridMainPanelBrush" Color="White" />
    145.                                         <!-- Brush @ C1DataGrid BorderBrush -->
    146.                                         <SolidColorBrush x:Key="DataGridBorderBrush" Color="#FFB0BDCA" />
    147.                                         <!--Thickness @ C1DataGrid -->
    148.                                         <Thickness x:Key="DataGridBorderThickness">1</Thickness>
    149.                                         <!--CornerRadius @ C1DataGrid -->
    150.                                         <CornerRadius x:Key="DataGridCornerRadius">0 0 0 0</CornerRadius>
    151.                                         <!-- Brush @ C1DataGrid Horizontal &amp; Vertical GridLines -->
    152.                                         <SolidColorBrush x:Key="DataGridLinesBrush" Color="#FFCDD5DC" />

    153.                                         <!-- Brush @ C1DataGrid Row -->
    154.                                         <SolidColorBrush x:Key="DataGridRowBrush" Color="White" />
    155.                                         <!-- Brush @ C1DataGrid Alternating Row -->
    156.                                         <SolidColorBrush x:Key="DataGridAlternatingRowBrush" Color="#FFF3F6F9" />

    157.                                         <!-- Brush @ C1DataGrid Foreground -->
    158.                                         <SolidColorBrush x:Key="DataGridForeground" Color="{StaticResource ForegroundColor}" />
    159.                                         <!-- Brush @ C1DataGrid Row Foreground -->
    160.                                         <SolidColorBrush x:Key="DataGridRowForeground" Color="{StaticResource ForegroundTextBoxColor}" />
    161.                                         <!-- Brush @ C1DataGrid Alternating Row Foreground -->
    162.                                         <SolidColorBrush x:Key="DataGridAlternatingRowForeground" Color="{StaticResource ForegroundTextBoxColor}" />

    163.                                         <!-- CornerRadius @ C1DataGrid -->
    164.                                         <CornerRadius x:Key="DataGridGeneralCornerRadius">0</CornerRadius>

    165.                                         <!-- Brush @ C1DataGrid bottom right corner -->
    166.                                         <LinearGradientBrush x:Key="DataGridBottomRightCornerBrush" EndPoint="0.5,1" StartPoint="0.5,0">


    167.                                             <GradientStop Color="#FFD1DCE8" Offset="1" />
    168.                                         </LinearGradientBrush>

    169.                                         <!-- CornerRadius @ C1DataGrid bottom right corner -->
    170.                                         <CornerRadius x:Key="DataGridBottomRightCornerRadius">0 0 0 0</CornerRadius>

    171.                                         <!-- Brush @ C1DataGrid top left corner -->
    172.                                         <RadialGradientBrush x:Key="DataGridTopLeftCornerBrush">
    173.                                             <RadialGradientBrush.RelativeTransform>
    174.                                                 <TransformGroup>
    175.                                                     <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.984" ScaleY="1.984" />
    176.                                                     <SkewTransform CenterX="0.5" CenterY="0.5" />
    177.                                                     <RotateTransform CenterX="0.5" CenterY="0.5" />
    178.                                                     <TranslateTransform X="0.502" Y="0.508" />
    179.                                                 </TransformGroup>
    180.                                             </RadialGradientBrush.RelativeTransform>


    181.                                             <GradientStop Color="#FFD1DCE8" Offset="1" />
    182.                                         </RadialGradientBrush>
    183.                                         <!-- Brush @ C1DataGrid top left corner on MouseOver -->
    184.                                         <RadialGradientBrush x:Key="DataGridTopLeftCornerOverBrush">
    185.                                             <RadialGradientBrush.RelativeTransform>
    186.                                                 <TransformGroup>
    187.                                                     <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.984" ScaleY="1.984" />
    188.                                                     <SkewTransform CenterX="0.5" CenterY="0.5" />
    189.                                                     <RotateTransform CenterX="0.5" CenterY="0.5" />
    190.                                                     <TranslateTransform X="0.502" Y="0.508" />
    191.                                                 </TransformGroup>
    192.                                             </RadialGradientBrush.RelativeTransform>


    193.                                             <GradientStop Color="#FFBFE1EA" Offset="1" />
    194.                                         </RadialGradientBrush>
    195.                                         <!-- CornerRadius @ C1DataGrid top left corner-->
    196.                                         <CornerRadius x:Key="DataGridTopLeftCornerRadius">0 0 0 0</CornerRadius>
    197.                                         <!-- Thickness @ C1DataGrid top left corner-->
    198.                                         <Thickness x:Key="DataGridTopLeftBorderThickness">0 0 1 1</Thickness>

    199.                                         <!-- WPF Input Brushes -->
    200.                                         <SolidColorBrush x:Key="WpfInputDataGridBorderBrush" Color="#FF919191" />
    201.                                         <SolidColorBrush x:Key="WpfInputDataGridLinesBrush" Color="#FFD3D3D3" />
    202.                                         <SolidColorBrush x:Key="WpfInputDataGridMouseOverBrush" Color="#99BDE6FD" />
    203.                                         <SolidColorBrush x:Key="WpfInputDataGridSelectedBackground" Color="#CCA9DAF3" />

    204.                                         <!--******************** Row Presenter ********************-->

    205.                                         <!-- Brush @ C1DataGrid Row Presenter Background on MouseOver -->
    206.                                         <SolidColorBrush x:Key="DataGridRowOverBrush" Color="#FFBBDFE9" />
    207.                                         <!-- Brush @ C1DataGrid Row Presenter Selected Background -->
    208.                                         <SolidColorBrush x:Key="DataGridRowSelectedBackground" Color="#FFA4DEED" />

    209.                                         <!--******************** Filters ********************-->
    210.                                         <!-- Brush @ C1DataGrid Filter Background -->
    211.                                         <LinearGradientBrush x:Key="DataGridFilterBrush" EndPoint="0.5,1" StartPoint="0.5,0">
    212.                                             <GradientStop Color="#FFEEF2F6" Offset="0.8" />
    213.                                             <GradientStop Color="#FFD0DBE7" Offset="1" />
    214.                                         </LinearGradientBrush>
    215.                                         <!-- Brush @ C1DataGrid Filter Content Background -->
    216.                                         <LinearGradientBrush x:Key="DataGridFilterContentBrush" EndPoint="0.5,1" StartPoint="0.5,0">
    217.                                             <GradientStop Color="#FFC8C4E1" Offset="0.7" />
    218.                                         </LinearGradientBrush>
    219.                                         <!-- CornerRadius @ C1DataGrid Filter -->
    220.                                         <CornerRadius x:Key="DataGridFilterCornerRadius">0 0 2 2</CornerRadius>
    221.                                        
    222.                                         <!-- C1DropDown @ C1DataGrid Options -->
    223.                                         <ControlTemplate x:Key="DataGridColumnHeaderOptionsDDownStyle" TargetType="c1:C1DropDown">
    224.                                             <Grid>
    225.                                                 <VisualStateManager.VisualStateGroups>
    226.                                                     <VisualStateGroup x:Name="DropDownOpenStates">
    227.                                                         <VisualState x:Name="Closed">
    228.                                                             <Storyboard />
    229.                                                         </VisualState>
    230.                                                         <VisualState x:Name="Opened" />
    231.                                                     </VisualStateGroup>
    232.                                                     <VisualStateGroup x:Name="CommonStates">
    233.                                                         <VisualState x:Name="Normal" />
    234.                                                         <VisualState x:Name="Disabled" />
    235.                                                         <VisualState x:Name="MouseOver" />
    236.                                                     </VisualStateGroup>
    237.                                                     <VisualStateGroup x:Name="FocusStates">
    238.                                                         <VisualState x:Name="Unfocused" />
    239.                                                         <VisualState x:Name="Focused">
    240.                                                             <Storyboard />
    241.                                                         </VisualState>
    242.                                                     </VisualStateGroup>
    243.                                                 </VisualStateManager.VisualStateGroups>
    244.                                                 <ToggleButton x:Name="ArrowToggle" Width="14" IsEnabled="{TemplateBinding IsEnabled}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" Style="{StaticResource DataGridColumnHeaderOptionsTButtonStyle}" c1:ClearStyleExtensions.MouseOverBrush="{TemplateBinding MouseOverBrush}" c1:ClearStyleExtensions.PressedBrush="{TemplateBinding PressedBrush}" IsTabStop="False" Content="{TemplateBinding Header}" />
    245.                                                 <Popup x:Name="DropDownPopup" VerticalAlignment="Bottom">
    246.                                                     <ContentPresenter />
    247.                                                 </Popup>
    248.                                             </Grid>
    249.                                         </ControlTemplate>

    250.                                         <!-- Style @ C1DataGrid ColumnHeader Filter Icon -->
    251.                                         <Style x:Key="DataGridColumnHeaderFilterIconStyle" TargetType="Path">
    252.                                             <Setter Property="Stretch" Value="None" />
    253.                                             <Setter Property="Height" Value="8" />
    254.                                             <Setter Property="Width" Value="8" />
    255.                                             <Setter Property="StrokeThickness" Value="1" />
    256.                                             <Setter Property="Opacity" Value="0.6" />
    257.                                         </Style>

    258.                                         <!-- Style @ C1DataGrid ColumnHeader Options Icon -->
    259.                                         <Style x:Key="DataGridColumnHeaderOptionsIconStyle" TargetType="Polygon">
    260.                                             <Setter Property="Width" Value="7" />
    261.                                             <Setter Property="StrokeThickness" Value="1" />
    262.                                             <Setter Property="Opacity" Value="0.6" />
    263.                                         </Style>

    264.                                     </Grid.Resources>
    265.                                     <VisualStateManager.VisualStateGroups>
    266.                                         <VisualStateGroup x:Name="CommonStates">
    267.                                             <VisualState x:Name="Normal" />
    268.                                             <VisualState x:Name="Disabled" />
    269.                                             <VisualState x:Name="MouseOver">
    270.                                                 <Storyboard>
    271.                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MouseOverElement" Storyboard.TargetProperty="(UIElement.Visibility)" Duration="0">
    272.                                                         <DiscreteObjectKeyFrame KeyTime="00:00:00">
    273.                                                             <DiscreteObjectKeyFrame.Value>
    274.                                                                 <Visibility>Visible</Visibility>
    275.                                                             </DiscreteObjectKeyFrame.Value>
    276.                                                         </DiscreteObjectKeyFrame>
    277.                                                     </ObjectAnimationUsingKeyFrames>
    278.                                                 </Storyboard>
    279.                                             </VisualState>
    280.                                         </VisualStateGroup>
    281.                                         <VisualStateGroup x:Name="SelectionStates">
    282.                                             <VisualState x:Name="Selected">
    283.                                                 <Storyboard>
    284.                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedElement" Storyboard.TargetProperty="(UIElement.Visibility)" Duration="0">
    285.                                                         <DiscreteObjectKeyFrame KeyTime="00:00:00">
    286.                                                             <DiscreteObjectKeyFrame.Value>
    287.                                                                 <Visibility>Visible</Visibility>
    288.                                                             </DiscreteObjectKeyFrame.Value>
    289.                                                         </DiscreteObjectKeyFrame>
    290.                                                     </ObjectAnimationUsingKeyFrames>
    291.                                                 </Storyboard>
    292.                                             </VisualState>
    293.                                             <VisualState x:Name="Editing">
    294.                                                 <Storyboard>
    295.                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedElement" Storyboard.TargetProperty="(UIElement.Visibility)" Duration="0">
    296.                                                         <DiscreteObjectKeyFrame KeyTime="00:00:00">
    297.                                                             <DiscreteObjectKeyFrame.Value>
    298.                                                                 <Visibility>Visible</Visibility>
    299.                                                             </DiscreteObjectKeyFrame.Value>
    300.                                                         </DiscreteObjectKeyFrame>
    301.                                                     </ObjectAnimationUsingKeyFrames>
    302.                                                 </Storyboard>
    303.                                             </VisualState>
    304.                                             <VisualState x:Name="Unselected">
    305.                                                 <Storyboard />
    306.                                             </VisualState>
    307.                                         </VisualStateGroup>
    308.                                         <VisualStateGroup x:Name="OptionsStates">
    309.                                             <VisualState x:Name="Filtering">
    310.                                                 <Storyboard>
    311.                                                     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="OptionsArrow" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0">
    312.                                                         <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="0" />
    313.                                                     </DoubleAnimationUsingKeyFrames>
    314.                                                     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Filter" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0">
    315.                                                         <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value=".6" />
    316.                                                     </DoubleAnimationUsingKeyFrames>
    317.                                                 </Storyboard>
    318.                                             </VisualState>
    319.                                             <VisualState x:Name="Undefined">
    320.                                                 <Storyboard>
    321.                                                     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="OptionsArrow" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0">
    322.                                                         <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="1" />
    323.                                                     </DoubleAnimationUsingKeyFrames>
    324.                                                     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Filter" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0">
    325.                                                         <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="0" />
    326.                                                     </DoubleAnimationUsingKeyFrames>
    327.                                                 </Storyboard>
    328.                                             </VisualState>
    329.                                         </VisualStateGroup>
    330.                                         <VisualStateGroup x:Name="MergingStates">
    331.                                             <VisualState x:Name="Merging">
    332.                                                 <Storyboard>
    333.                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundBrush" Storyboard.TargetProperty="DesignBrush">
    334.                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource DataGridColumnHeaderMergingBrush}" />
    335.                                                     </ObjectAnimationUsingKeyFrames>
    336.                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MouseOverBrush" Storyboard.TargetProperty="DesignBrush">
    337.                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource DataGridColumnHeaderMergingOverBrush}" />
    338.                                                     </ObjectAnimationUsingKeyFrames>
    339.                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedBackground" Storyboard.TargetProperty="DesignBrush">
    340.                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource DataGridColumnHeaderMergingSelectedBrush}" />
    341.                                                     </ObjectAnimationUsingKeyFrames>
    342.                                                 </Storyboard>
    343.                                             </VisualState>
    344.                                             <VisualState x:Name="NotMerging">
    345.                                             </VisualState>
    346.                                         </VisualStateGroup>
    347.                                     </VisualStateManager.VisualStateGroups>
    348.                                     <Grid.RowDefinitions>
    349.                                         <RowDefinition Height="*" />
    350.                                         <RowDefinition Height="Auto" />
    351.                                     </Grid.RowDefinitions>
    352.                                     <Grid.ColumnDefinitions>
    353.                                         <ColumnDefinition Width="*" />
    354.                                         <ColumnDefinition Width="Auto" />
    355.                                         <ColumnDefinition Width="Auto" />
    356.                                     </Grid.ColumnDefinitions>
    357.                                     <c1:C1BrushBuilder x:Name="BackgroundBrush" Input="{TemplateBinding Background}" DesignBrush="{StaticResource DataGridColumnHeaderBrush}" DesignColor="{StaticResource BaseColor}" />
    358.                                     <c1:C1BrushBuilder x:Name="MouseOverBrush" Input="{TemplateBinding MouseOverBrush}" DesignBrush="{StaticResource DataGridColumnHeaderOverBrush}" DesignColor="{StaticResource MouseOverColor}" />
    359.                                     <c1:C1BrushBuilder x:Name="SelectedBackground" Input="{TemplateBinding SelectedBackground}" DesignBrush="{StaticResource DataGridColumnHeaderSelectedBackground}" DesignColor="{StaticResource SelectedColor}" />
    360.                                     <c1:C1BrushBuilder x:Name="IconBrush" Input="{TemplateBinding Foreground}" DesignBrush="{StaticResource DataGridColumnHeaderIconBrush}" DesignColor="{StaticResource ForegroundColor}" />
    361.                                     <c1:C1BrushBuilder x:Name="IconBorderBrush" Input="{TemplateBinding Foreground}" DesignBrush="{StaticResource DataGridColumnHeaderIconBorderBrush}" DesignColor="{StaticResource ForegroundColor}" />
    362.                                     <Border x:Name="BackgroundElement" Background="Transparent" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Grid.RowSpan="2" Grid.ColumnSpan="4" />
    363.                                     <Border x:Name="SelectedElement" Background="{Binding ElementName=SelectedBackground, Path=Output}" BorderBrush="{TemplateBinding SelectedBackground}" BorderThickness="{TemplateBinding BorderThickness}" Grid.RowSpan="2" Grid.ColumnSpan="4" Visibility="Collapsed" />
    364.                                     <Border x:Name="MouseOverElement" Background="{Binding ElementName=MouseOverBrush, Path=Output}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Grid.RowSpan="2" Grid.ColumnSpan="4" Visibility="Collapsed" />
    365.                                     <ToggleButton x:Name="Sort" Grid.RowSpan="2" Grid.ColumnSpan="2" Style="{StaticResource DataGridColumnHeaderSortTButtonStyle}" IsHitTestVisible="True" IsTabStop="False" Foreground="{TemplateBinding Foreground}" Margin="{StaticResource DataGridBorderThickness}" />
    366.                                     <ContentPresenter x:Name="ContentPresenter" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="6,0,6,0" Visibility="Visible" />

    367.                                     <c1:C1DropDown x:Name="Options" HorizontalAlignment="Right" Visibility="Collapsed" Template="{StaticResource DataGridColumnHeaderOptionsDDownStyle}" IsTabStop="False" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" Padding="0" Margin="{TemplateBinding BorderThickness}" AutoSizeMode="GrowHorizontally" MouseOverBrush="{TemplateBinding MouseOverBrush}" PressedBrush="{TemplateBinding PressedBrush}">
    368.                                         <c1:C1DropDown.Header>
    369.                                             <Grid>
    370.                                                 <Path x:Name="Filter" Data="M3.5,0.5 L4.5,0.5 L4.5,0.5 L7.5,0.5 L7.5,1.5 L7.5,1.5 L4.5,4.3 L4.5,7.5 L3.5,7.5 L3.5,4.3 L0.5,1.5 L0.5,0.5 L3.5,0.5 z" Fill="{Binding Output, ElementName=IconBrush}" Stroke="{Binding Output, ElementName=IconBorderBrush}" Style="{StaticResource DataGridColumnHeaderFilterIconStyle}" />
    371.                                                 <Polygon x:Name="OptionsArrow" Stretch="Uniform" Points="0,0 2,0 1,1" Fill="{Binding Output, ElementName=IconBrush}" Stroke="{Binding Output, ElementName=IconBorderBrush}" Style="{StaticResource DataGridColumnHeaderOptionsIconStyle}" />
    372.                                             </Grid>
    373.                                         </c1:C1DropDown.Header>
    374.                                     </c1:C1DropDown>
    375.                                     <Rectangle x:Name="Resize" Fill="White" Width="4" Grid.RowSpan="2" Grid.ColumnSpan="3" HorizontalAlignment="Right" Cursor="SizeWE" Opacity="0" Margin="0 0 -2 0" Visibility="Visible" />
    376.                                 </Grid>
    377.                             </ControlTemplate>
    378.                         </Setter.Value>
    379.                     </Setter>
    380.                 </Style>

    381.             </c1:C1DataGrid.ColumnHeaderStyle>
    复制代码



  • 原来的DataGrid里数据多的时候,用虚拟化可以加快速度,我用c1DataGrid,没有这个属性了。
    现在使用<c1:C1DataGrid Name="c1DataGrid1" ScrollMode="Deferred"/>即可



    以后如有其他补充,随时修改
  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    1 个回复

    倒序浏览
    Alice
    社区贡献组   /  发表于:2015-7-21 09:52:00
    沙发
    回复 1楼feiyan0320的帖子

    谢谢您费心的总结和反馈。
    很详细。
    我也会总结一篇有关C1DataGrid和C1FlexGrid的对比说明,发布博客。
    完成后也请你看看。

    评分

    参与人数 1满意度 +5 收起 理由
    feiyan0320 + 5 多谢

    查看全部评分

    请点击评分,对我的服务做出评价!  5分为非常满意!

    葡萄城控件服务团队

    官方网站: http://www.gcpowertools.com.cn
    回复 使用道具 举报
    您需要登录后才可以回帖 登录 | 立即注册
    返回顶部