c# - WPF 自定义数据网格列标题

标签 c# wpf datagrid

我需要创建一个自定义 dataGrid DataGridTextColumn,如下图所示:

Sketch

红色矩形是文本框,用于在列内搜索。

到目前为止,我已经实现了这样的数据网格(简化版本):

        <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

我不知道如何创建这些文本框。任何线索将不胜感激

最佳答案

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

关于c# - WPF 自定义数据网格列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175546/

相关文章:

c# - AutoMapper - 如何将参数传递给配置文件?

c# - WPF:如何使用自定义窗口制作 native 窗口控制按钮?

c# - 扩展 Wpf Treeview 以支持排序

c# - DataGrid SelectedItem 不更新

c# - linq .Value 可空对象必须有一个值。如何跳过?

C# 转换十六进制值

datagrid - 使用 dojo 工具包的网格时如何使列不可排序?

c# - 设置 DataGrid 列的样式

c# - 仅设置属性是不好的做法吗?

c# - WPF 数据绑定(bind)到接口(interface)而不是实际对象 - 可以转换吗?