2014-10-11 75 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