2013-03-02 37 views
6

我需要創建一個自定義的數據網格DataGridTextColumn像下面的草圖:WPF自定義數據網格列標題

Sketch

紅色矩形是文本框和用於該列中進行搜索。

到目前爲止,我已經實現了這樣一個DataGrid(簡化版本):

 <DataGrid x:Name="CompassLogDataGrid" 
       Grid.Row="1" 
       Style="{DynamicResource ResourceKey=DataGridStyle}" 
       IsTextSearchEnabled="True"> 

      <DataGrid.Columns> 
       <DataGridTextColumn CellStyle="{StaticResource IdCell}" 
           x:Name="ID" 
           Header="ID" 
           Foreground="Black" 
           Binding="{Binding ID}" 
           DisplayIndex="0" /> 

       <DataGridTextColumn x:Name="DateGTC" 
           Header="Date" 
           Binding="{Binding DateString}" 
           CellStyle="{StaticResource DateGTCCell}" /> 
      </DataGrid.Columns 

    </DataGrid 

我不知道如何來創建這些文本框。任何線索將不勝感激

回答

23

DataGridTemplateColumn是你在找什麼。您可以自定義模板,根據自己的需要 -

<DataGrid> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBox BorderBrush="Red" BorderThickness="3" Margin="5"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

隨着樣本ItemsSource它給這個樣子 -

enter image description here

編輯

如果您想自定義標題,你需要爲你的專欄提供HeaderTemplate這樣 -

<DataGrid> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding Name}" 
           Header="{Binding HeaderName}"> 
       <DataGridTextColumn.HeaderTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="{Binding Content, RelativeSource= 
             {RelativeSource Mode=TemplatedParent}}" 
             Margin="5"/> 
          <TextBox BorderBrush="Red" BorderThickness="3" 
            Width="50" Margin="5"/> 
         </StackPanel> 
        </DataTemplate> 
       </DataGridTextColumn.HeaderTemplate> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

這裏的樣子 -

enter image description here