Modeling a decision tree-like form
Well, i think, you should first ask yourself do you really want to complicate things? Is this something that you will re-use in other places? Because the feeling "i need to create something reusable and extendable" if familiar to every one of us, but the amount of code you'll need to write and debug is not always worth it in the end.

If you answer is "no", then you can simply do a little refactoring: move classes to separate files, replace individual viewmodel properties with Dictionary&lt;ColourChoice, ViewModelBase&gt;, stuff like that. It will end up looking fine.

If your answer is "yes", then i would probably create a tree-like structure from my view models by implementing something like:

interface ITreeViewModel
{
    IEnumerable&lt;ITreeItem&gt; Children { get; }
    bool IsSelected { get; }
    ITreeItem Parent { get; }
}


Then i would create a custom user control wich will display such tree using this interface and specidied DataTemplates (after i will fail to make wpf TreeView work as i want it too yet again -_-). This is a tricky task with plenty of pitfalls, but i think its possible. At least that would be an approach I'd try first.