Ваша лучшая ставка здесь - отказаться от сетки данных и использовать вместо нее ListView, а внутри ListView вы захотите показать UserControl вашего собственного дизайна. Я сделал нечто подобное для приложения, которое я создал.
В вашем XAML для вашего ListView вы захотите установить ItemContainerStyle, а внутри вы захотите отобразить свой собственный UserControl (в котором вы можете использовать Grid для настройки строк / столбцов и их диапазонов). В основном это выглядит так:
<ListView
Name="_listView"
Grid.Row="0" Grid.Column="0"
SelectionMode="Single"
IsSynchronizedWithCurrentItem="True"
SelectedItem="{Binding SelectedAgent, Mode=TwoWay}"
ItemsSource="{Binding Agents, Mode=OneWay}"
GridViewColumnHeader.Click="ListView_Click"
DependencyProperties:ListBoxClickCommand.ClickCommand="{Binding ShowAgentDetailsCommand}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border
Name="_border"
Padding="2"
CornerRadius="5"
SnapsToDevicePixels="true"
Background="Transparent">
<Controls:AgentStateControl></Controls:AgentStateControl>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="_border" Property="Background" Value="CornflowerBlue" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
AgentStateControl - это мой пользовательский элемент управления, он состоит из двух строк, второй имеет больший интервал по столбцам. Вы можете создать этот элемент управления, как хотите.