2014-10-11 42 views
0

我有5列的表,ScanCount,逻辑读取等 这是我对所有列排序处理:如何风格特定的列标题

<Window.Resources> 
    <Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type GroupItem}"> 
        <Expander x:Name="exp" IsExpanded="True" 
         Background="White" 
         Foreground="Black"> 
         <Expander.Header> 
          <TextBlock Text="{Binding Name}" /> 
         </Expander.Header> 
         <ItemsPresenter /> 
        </Expander> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    <Style TargetType="{x:Type DataGridColumnHeader}"> 
     <EventSetter Event="Click" 
        Handler="GridViewColumnHeaderClickedHandler"/> 
    </Style>   
</Window.Resources> 

<Grid> 
    <DataGrid x:Name="GridView1"     
     ItemsSource="{Binding listAggregation}" 
     CanUserAddRows="False" Margin="0,65,0,46" AllowDrop="True" Drop="Grid_Drop" AutoGenerateColumns="True" > 

     <DataGrid.Columns> 
      <DataGridTextColumn Header="Table"> 
       <DataGridTextColumn.HeaderStyle> 
        <Style TargetType="DataGridColumnHeader" 
        BasedOn="{StaticResource {x:Type DataGridColumnHeader}}"> 
         <EventSetter Event="PreviewMouseMove" 
          Handler="DataGridHeader_PreviewMouseMove"/> 
        </Style> 
       </DataGridTextColumn.HeaderStyle> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 


     <DataGrid.GroupStyle> 
      <GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}"> 
       <GroupStyle.Panel> 
        <ItemsPanelTemplate> 
         <DataGridRowsPresenter/> 
        </ItemsPanelTemplate> 
       </GroupStyle.Panel> 
      </GroupStyle> 
     </DataGrid.GroupStyle> 

    </DataGrid> 

    <Label x:Name="MyGroupDescriptionsList" HorizontalAlignment="Left" Margin="19,10,0,0" VerticalAlignment="Top" Width="151" 
      AllowDrop="True" Drop="Label_Drop" Background="#FFE2D8D8" Height="31" QueryContinueDrag="Label_QueryContinueDrag" PreviewMouseMove="Label_Mousemove" Content="Drag Your Header Here" FontWeight="Bold"/> 
</Grid> 

我怎么能合并这两个?我只想要列标题'Table'(这是第一列)能够使用此拖放并将所有列都用于排序。列在代码后面创建。 欢迎任何建议。谢谢!

回答

2

您可以使用BasedOn继承默认样式。但是,为了工作而不是明确设置默认样式为ColumnHeaderStyle,请在DataGrid资源部分下声明它。 之后,您可以使用BasedOn继承默认样式。

<DataGrid AutoGenerateColumn="False"> 
    <DataGrid.Resources> 
     <Style TargetType="{x:Type DataGridColumnHeader}"> 
      <EventSetter Event="Click" 
         Handler="GridViewColumnHeaderClickedHandler"/> 
     </Style> 
    </DataGrid.Resources> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Table"> 
      <DataGridTextColumn.HeaderStyle> 
       <Style TargetType="DataGridColumnHeader" 
         BasedOn="{StaticResource {x:Type DataGridColumnHeader}}"> 
        <EventSetter Event="PreviewMouseMove" 
           Handler="DataGridHeader_PreviewMouseMove"/> 
       </Style> 
      </DataGridTextColumn.HeaderStyle> 
     </DataGridTextColumn> 
     ......... 
    </DataGrid.Columns> 
</DataGrid> 
+0

罗希特 - 而在此之前增加了一个名为“表”新列一个已经存在的 – Jason 2014-10-13 04:50:32

+0

是的,你必须设置'的AutoGenerateColumns = FALSE'上的数据网格为。 – 2014-10-13 06:57:11

+0

如果我将它设置为false,那么只有一个空列显示在datagrid'Table'上。所有的列都是从后面的代码生成的。 – Jason 2014-10-13 07:29:03