TheRealSteveJudge
Вы можете использовать так называемые DataGridTemplateColumns.
Сначала вы должны отключить автоматическую генерацию столбцов, установив свойству AutoGenerateColumns значение "False".
Затем вы должны предоставить шаблон для каждого столбца.
Однако в этом примере просто показано, как определить шаблоны для первых двух столбцов.
Остальные колонки будут вашим домашним заданием. :-) Удачи!
<Window x:Class="CustomDataRow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<DataGrid Name="DataGridPersons" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border Background="LightGray">
<TextBlock Text="Address"></TextBlock>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Name}"></TextBlock>
<TextBlock Grid.Row="1" Text="{Binding Street}"></TextBlock>
<TextBlock Grid.Row="2" Text="{Binding Location}"></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Код, лежащий в основе этого примера:
using System.Collections.Generic;
using System.Windows;
using CustomDataRow.Models;
namespace CustomDataRow
{
public partial class MainWindow
{
private List<Person> persons;
public MainWindow()
{
Loaded += MainWindow_Loaded;
InitializeComponent();
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
persons = new List<Person>
{
new Person
{
Name = "Frank Sinatra",
Street = "26 Music Lane",
Location = "New York"
},
new Person
{
Name = "Paul Young",
Street = "Data",
Location = "New York"
},
new Person
{
Name = "Jim Beam",
Street = "26 Music Lane",
Location = "New York"
}
};
DataGridPersons.ItemsSource = persons;
}
}
}
и конечно же человек модель:
namespace CustomDataRow.Models
{
public class Person
{
public string Name { get; set; }
public string Street { get; set; }
public string Location { get; set; }
}
}