Caixa de combinação de vários itens com cabeçalhos no dicionário de recursos?

Eu segui a resposta aceita deesta pergunta para definir uma caixa de combinação de várias colunas com cabeçalhos.

Não estava funcionando para mim, então fiz algumas alterações e agora funciona. Aqui está o xaml para criar uma comboBox de várias colunas com cabeçalhos.

   <Page.DataContext>
       <vm:ItemsViewModel />
   </Page.DataContext>

   <Page.Resources>
       <CollectionViewSource x:Key="UnitsCollection" Source="{Binding Units}" />
   </Page.Resources>

   <ComboBox Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="2" Grid.IsSharedSizeScope="True" 
              x:Name="cbUnits" ItemsSource="{DynamicResource Items}" IsEditable="True" TextSearch.TextPath="Symbol"
              SelectedValue="{Binding SelectedUnit}" SelectedValuePath="UnitID">
        <ComboBox.Resources>
            <CompositeCollection x:Key="Items">
                <ComboBoxItem IsEnabled="False">
                    <Grid TextElement.FontWeight="Bold">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition SharedSizeGroup="A" />
                            <ColumnDefinition Width="50" />
                            <ColumnDefinition SharedSizeGroup="B" />
                        </Grid.ColumnDefinitions>
                        <Grid.Children>
                            <TextBlock Grid.Column="0" Text="Name" />
                            <TextBlock Grid.Column="2" Text="Symbol" />
                        </Grid.Children>
                    </Grid>
                </ComboBoxItem>
                <Separator />
                <CollectionContainer Collection="{Binding Source={StaticResource UnitsCollection}}" />
            </CompositeCollection>

            <DataTemplate DataType="{x:Type models:Unit}">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition SharedSizeGroup="A" />
                        <ColumnDefinition Width="50" />
                        <ColumnDefinition SharedSizeGroup="B" />
                    </Grid.ColumnDefinitions>
                    <Grid.Children>
                        <TextBlock Grid.Column="0" Text="{Binding Name}" />
                        <TextBlock Grid.Column="2" Text="{Binding Symbol}" />
                    </Grid.Children>
                </Grid>
            </DataTemplate>
        </ComboBox.Resources>
    </ComboBox>

</Page>

Agora, eu gostaria de definir a seção entre<ComboBox.Resources> em um dicionário de recursos, para que eu não precise escrevê-lo repetidamente. Também quero adicionar mais duas funcionalidades ao dicionário de recursos:

Vincule os nomes da coluna e os valores da coluna de alguma forma (não sei), para que qualquer caixa de combinação de duas colunas possa usar esse dicionário de recursos.

Se possível, gostaria de adicionar alguma lógica no dicionário de recursos para que o mesmo dicionário de recursos possa ser usado para qualquer caixa de combinação com qualquer número de colunas.

Acho que alguém poderia me guiar na direção certa e, se alguém já fez isso no passado, posso obter ajuda para isso, que é outra intenção de fazer essa pergunta.

Se minhas perguntas acima não forem resolvidas usando apenas xaml, também aceitaria feliz a solução.

questionAnswers(1)

yourAnswerToTheQuestion