I’m looking to create a custom layout for a datagrid column. I want to stack some columns like you can with Infragistics (one above another), but I want to do it myself. Is this possible? I’ve searched the internet and can’t find anything.
I’ve tried many tutorials and can’t find anything about stacking columns in a datagrid. I’ve searched the internet and can’t find anything. Is it possible to stack columns in a datagrid?
<Grid>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="False">
<DataGrid.Resources>
<!-- Style pour les en-têtes groupés -->
<Style TargetType="DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<Grid>
<TextBlock Text="{Binding}" FontWeight="Bold" />
<ContentPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
<!-- Définir les colonnes du DataGrid -->
<DataGrid.Columns>
<!-- Colonne 1 -->
<DataGridTextColumn Header="ID" Binding="{Binding Id}" />
<!-- Colonne 2 avec en-tête groupé -->
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<StackPanel>
<TextBlock Text="Primary Name" FontWeight="Bold" />
<TextBlock Text="Secondary Name" />
</StackPanel>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding PrimaryName}" />
<TextBlock Text="{Binding SecondaryName}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- Colonne 3 -->
<DataGridTextColumn Header="Age" Binding="{Binding Age}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
`
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
LoadDataGrid();
}
private void LoadDataGrid()
{
// Données
var data = new List<MyData>
{
new MyData { Id = 1, PrimaryName = "John", SecondaryName = "Doe", Age = 25 },
new MyData { Id = 2, PrimaryName = "Jane", SecondaryName = "Doe", Age = 30 },
new MyData { Id = 3, PrimaryName = "Sam", SecondaryName = "Smith", Age = 35 }
};
// Lier les données
dataGrid.ItemsSource = data;
}
}
`
public class MyData
{
public int Id { get; set; }
public string PrimaryName { get; set; }
public string SecondaryName { get; set; }
public int Age { get; set; }
}
3