Я хочу отображать несколько экранов одновременно. Отображение только одного экрана работает нормально, но когда я переключаю проводник на Conductor<DMChartBase>.Collection.AllActive
и добавляю еще один элемент, он все равно отображает только один элемент.
public class DocumentViewModel : Conductor<DMChartBase>.Collection.AllActive
{
public ChartLegendViewModel ChartLegendVm { get; set; }
public DocumentViewModel()
{
ChartLegendVm = new ChartLegendViewModel();
ActivateItem(ChartLegendVm);
}
public void ChangeChart(DMChartBase chart, Column[] columns)
{
ActivateItem(chart);
Items.Last().Init(columns);
Items.Refresh();
}
}
И DocumentView
:
<ItemsControl x:Name="Items"></ItemsControl>
Я не могу найти причину, по которой это не работает. Любые идеи?
РЕДАКТИРОВАТЬ: Моя структура кода выглядит так:
public class ShellViewModel : Screen
public class DocumentViewModel : Conductor<DMChartBase>.Collection.AllActive
public class ChartLegendViewModel : ChartDecorator
public abstract class ChartDecorator : DMChartBase
public abstract class DMChartBase : Screen
DocumentView:
<UserControl ...>
<Grid>
<ItemsControl x:Name="Items">
</Grid>
</UserControl>
ChartLegendView:
<UserControl ....>
<ListView>
<ListViewItem Content="First value"></ListViewItem>
<ListViewItem Content="Second value"></ListViewItem>
<ListViewItem Content="Third value"></ListViewItem>
</ListView>
</UserControl>
Загрузчик:
protected override void OnStartup(object sender, StartupEventArgs e)
{
DisplayRootViewFor<ShellViewModel>()
}
РЕДАКТИРОВАТЬ: Я разобрался! Раньше я хотел создать отдельно Chart и Legend, что неверно. DocumentViewModel
должен отвечать только за создание экземпляров ChartDecorator
. Внутри ChartDecorator
я могу создать столько классов-декораторов, сколько захочу (например, ChartLegendViewModel), и все они будут нарисованы.