Привязка объектов, отсутствующих в списке, к Telerik RadCartesianChart
У меня возникают проблемы при попытке привязать мой RadCartesianChart к различным объектам. Я пытаюсь создать простую гистограмму, которая показывает сумму кредита для каждого из 3 объектов. Я использую шаблон MVVM, и DataContext действительно имеет мои 3 объекта (Current, Proposed, PayDown). Я хотел бы установить привязки в XAML. Вот что у меня сейчас есть:
<telerikChart:RadCartesianChart Width="500" >
<chartView:BarSeries ItemsSource="{Binding CurrentLoan}" ValueBinding="LoanAmount" CategoryBinding="Name"/>
<chartView:BarSeries ItemsSource="{Binding Proposed}" ValueBinding="LoanAmount" CategoryBinding="Name"/>
<chartView:BarSeries ItemsSource="{Binding PayDown}" ValueBinding="LoanAmount" CategoryBinding="Name"/>
<telerikChart:RadCartesianChart.HorizontalAxis>
<chartView:CategoricalAxis/>
</telerikChart:RadCartesianChart.HorizontalAxis>
<telerikChart:RadCartesianChart.VerticalAxis>
<chartView:LinearAxis/>
</telerikChart:RadCartesianChart.VerticalAxis>
</telerikChart:RadCartesianChart>
После загрузки приложения отображается сообщение "Нет данных". Если я выбрасываю объекты в список и устанавливаю источник элементов для каждого BarSeries для объекта в этом списке, это не проблема. Любые идеи о том, что я ошибаюсь? Спасибо!
1 ответ
Свойство BarSeries.ItemsSource имеет тип IEnumerable (см. Здесь). Вот почему это работает, когда вы бросаете свои предметы в список. Вы не показываете свою модель представления, но похоже, что она содержит три объекта вашей бизнес-модели (Current, Proposed, PayDown), и, как предполагается, они не реализуют IEnumerable.
Вы, вероятно, захотите сделать что-то похожее на то, что в примере здесь, установив свойство DataPoints BarSeries с тремя элементами CategoryorDataPoint, значения которых связаны с тремя объектами в вашей модели представления.
В качестве альтернативы, вы можете поместить три свойства viewmodel в CompositeCollection в xaml как ItemsSource.