Я хочу отобразить пару экранов одновременно. Отображение только одного экрана прекрасно работает, но когда я переключаю свой проводник на 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>
я не могу найти причину, почему это не работает. Есть идеи?
EDIT: Моя структура кода выглядит следующим образом:
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>
Bootstrapper:
protected override void OnStartup(object sender, StartupEventArgs e)
{
DisplayRootViewFor<ShellViewModel>()
}
EDIT: Я понял это! Раньше я хотел создать экземпляр Chart и Legend отдельно, что неправильно. DocumentViewModel
должен отвечать только за создание экземпляра ChartDecorator
. Внутри ChartDecorator
Я могу создать столько классов декораторов, сколько хочу (например, ChartLegendViewModel), и все они нарисованы.
Какой контейнер вы используете? – mvermef