The problem is not the child, but the item container, which has HorizontalAlignment = Left, hidden somewhere deep inside the frame code. Only after fixing this will you get the behavior that you would expect by default.

<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<GroupStyle.HeaderContainerStyle >
<Style TargetType="ListViewHeaderItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</GroupStyle.HeaderContainerStyle>
source
share