I would say if you want to group items in ListView
you will not go around the CollectionViewSource
. It's easier to fill it in ViewModel, but if you haven't VM you can also create one in XAML.
<StackPanel>
<StackPanel.Resources>
<x:Array x:Key="arr" Type="{x:Type ListViewItem}">
<ListViewItem Content="Orange" Tag="Meal"/>
<ListViewItem Content="Apple" Tag="Meal"/>
<ListViewItem Content="Cat" Tag="Pets"/>
<ListViewItem Content="Dog" Tag="Pets"/>
<ListViewItem Content="Fish" Tag="Diverse"/>
<ListViewItem Content="Duck" Tag="Diverse"/>
</x:Array>
<CollectionViewSource x:Key="CVS" Source="{DynamicResource arr}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Tag" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</StackPanel.Resources>
<ListView ItemsSource="{Binding Source={StaticResource CVS}}">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Label Content="{Binding Name}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
</StackPanel>