A good pattern to use for UI like this is...
``` xml
<ListBox Name="GroupsListBox" ItemsSource="{Binding SettingsGroups}" DisplayMemberPath="Name" />
<ContentControl Content="{Binding SelectedItem,ElementName=GroupsListBox}">
    <ContentControl.Resources>
        <DataTemplate DataType="{x:Type vm:SettingsGroup1}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="Setting A" />
                <TextBox Text="{Binding Setting1A,Mode=TwoWay}" />
            </StackPanel>
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:SettingsGroup2}">
            <StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="Setting A" />
                    <TextBox Text="{Binding Setting2A,Mode=TwoWay}" />
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="Setting B" />
                    <TextBox Text="{Binding Setting2B,Mode=TwoWay}" />
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ContentControl.Resources>
</ContentControl>
```
``` C#
public class ParentViewModel
{
    IEnumerable<ISettingsGroup> _settingsGroups = new ObservableCollection<ISettingsGroup>
        {
            new SettingsGroup1(),
            new SettingsGroup2()
        };

    public IEnumerable<ISettingsGroup> SettingsGroups
    {
        get { return _settingsGroups; }
    }
}

public interface ISettingsGroup
{
    string Name { get; }
}

public class SettingsGroup1 : ISettingsGroup
{
    public string Name
    {
        get { return "Group 1"; }
    }

    public string Setting1A { get; set; }
}

public class SettingsGroup2 : ISettingsGroup
{
    public string Name
    {
        get { return "Group 2"; }
    }

    public string Setting2A { get; set; }
    public string Setting2B { get; set; }
}
```