Динамическое изменение содержимого UserControl во время выполнения с WPF / MVVM

Экран, который я пытаюсь создать, является средством просмотра результатов, состоящим из нескольких частей. Когда ваше пакетное задание завершится, вы сможете дважды щелкнуть по нему и открыть этот экран, который будет содержать верхний раздел основных данных о только что запущенном пакетном задании (верхние 30% экрана, полная ширина), затем нижний 70% будут состоять из выровненного по левому краю списка (20% ширины) с выбором вспомогательных результатов и панели сведений, занимающих оставшиеся 80% ширины.

Я хочу, чтобы он вел себя так: когда вы выбираете подрезультат в левом списке, правая панель заполняется деталями подрежима. Поскольку он будет сложным и должен быть масштабируемым, я хотел бы реализовать каждую панель отображения подробностей суб-результатов как UserControl.

Родительская ViewModel содержитIDictionary - и список будет заполняться из ключей этого словаря, и когда вы выбираете опцию, он извлекает объект IResultPanel из словаря, который будет пользовательским элементом управления, один пример кода ниже

public partial class SimpleCalcInfoResult : UserControl, IResultPanel
    {
        private SimpleCalcInfoResultViewModel _viewModel;

        public SimpleCalcInfoResult(SimpleCalcInfoResultViewModel viewModel)
        {
            InitializeComponent();
            _viewModel = viewModel;
        }
    }

Интерфейс IResultPanel - это пустой пустой интерфейс, используемый только для облегчения возможности использования словаря выше с общим типом, поскольку я чувствовал, что наличие словаря UserControls было слишком широким.

Проблема яу меня есть, я могуt выяснить, какой XAML использовать в родительском элементе управления, чтобы иметь изменяемую панель UserControl. Очевидно, вы можете иметь

 ... 

Как жестко запрограммированный пользовательский элемент управления, но как я могу иметь раздел XAML, который позволит мне изменить отображаемый элемент управления в зависимости от того, какой элемент ListBox вы выберете?

Ответы на вопрос(1)

Ваш ответ на вопрос