Aktualizowanie ListBox o różnych treściach po kliknięciu przycisku w WPF

Mam więc listbox i pasek narzędzi w mojej aplikacji WPF. Pasek narzędzi ma zwykłe kontrolki, a pole listy ma pionowe ekspandery.

Potrzebuję pola listy, aby mieć inny zestaw ekspanderów w zależności od tego, który przycisk został kliknięty. W tej chwili wygląda to tak:

<ListBox>
    <local:Select_Analysis_Panel/>
</ListBox>

Gdzielocal:Select_Analysis_Panel to oddzielny plik kontrolny użytkownika zawierający ekspandery. Jaki jest najlepszy sposób na dynamiczne aktualizowanie zawartości kontrolki ListBox po kliknięciu przycisku?

Przez ostatnie kilka godzin próbowałem użyć zestawu danych DataTemplates dla każdego zestawu ekspanderów i powiązać z właściwością kontrolną elementów z niewielkim wykorzystaniem z poniższym kodem. Po prostu staram się uzyskać podstawową strukturę przed skonfigurowaniem interfejsu MVVM. Później zamierzałem zastąpićItemsSource="Network_anal" z tobą wieszItemsSource="{Binding WhatExpanderViewModelProperty}" czy jakoś tak.

 <ListBox Width="250"  Margin="5,0,0,0">
            <ListBox.Resources>

                <DataTemplate DataType="Select_Analysis_Panel">
                    <local:Select_Analysis_Panel/>
                </DataTemplate>

                <DataTemplate x:Key="Network_anal" DataType="NetworkAnalysis">
                    <local:NetworkAnalysis/>
                </DataTemplate>.Resources>

            <ListBox.Template>                    
                <ControlTemplate>
                    <Border Background="Red"/>
                </ControlTemplate>                    
            </ListBox.Template>

            <ItemsControl ItemsSource="Network_anal"/>
</ListBox>

Czy w ogóle podchodzę do tego właściwie?

Oto, co próbuję zrobić. Poniżej po kliknięciu przycisku „Plik” pasek boczny wyświetla te 2 ekspandery:

 A kiedy przycisk „Projektowanie sieciowe”, te ekspandery są odtwarzane:

questionAnswers(2)

yourAnswerToTheQuestion