Динамическое изменение содержимого 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 вы выберете?