将不在列表中的对象绑定到Telerik RadCartesianChart

时间:2013-01-17 23:10:43

标签: xaml mvvm binding telerik-charting

我在尝试将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 个答案:

答案 0 :(得分:1)

BarSeries.ItemsSource属性的类型为IEnumerable(请参阅here)。这就是当您将项目放入列表时它的工作原理。您没有显示您的viewmodel,但看起来它暴露了您的三个业务模型对象(Current,Proposed,PayDown),并且假设这些对象没有实现IEnumerable。

您可能希望执行类似示例here中的内容,使用三个CategoricalDataPoint项设置BarSeries的DataPoints属性,这些项的值绑定到viewmodel中的三个对象。

或者,您可以将三个viewmodel属性放入xaml中的CompositeCollection作为ItemsSource。