我遇到了这个问题,我想不出一个简单的方法来解决它。
这是我的XAML
<toolkit:Chart Height="250" x:Name="ProductSalesChart" >
<toolkit:Chart.Series>
<toolkit:StackedBarSeries>
<toolkit:SeriesDefinition Title="Series1" ItemsSource="{Binding ProductA}" IndependentValueBinding="{Binding Milestone}" DependentValueBinding="{Binding Sales}">
</toolkit:SeriesDefinition>
<toolkit:SeriesDefinition Title="Series2" ItemsSource="{Binding ProductB}" IndependentValueBinding="{Binding Milestone}" DependentValueBinding="{Binding Sales}">
</toolkit:SeriesDefinition>
<toolkit:StackedBarSeries.IndependentAxis>
<toolkit:CategoryAxis Orientation="X"></toolkit:CategoryAxis>
</toolkit:StackedBarSeries.IndependentAxis>
<toolkit:StackedBarSeries.DependentAxis>
<toolkit:LinearAxis Orientation="Y" ShowGridLines="True"></toolkit:LinearAxis>
</toolkit:StackedBarSeries.DependentAxis>
</toolkit:StackedBarSeries>
</toolkit:Chart.Series>
</toolkit:Chart>所以基本上,它是一个堆叠的图表,在X轴上有里程碑,在Y轴上有每个产品的销售数量。我得到了这个工作,除了我检索的产品来自数据库,它可以被改变。在上面的图表中,我将其硬编码为两个(Series1和Series2)。有没有办法把这个系列绑定到一个View模型对象上,这样它就可以自动升降了?
根据我的调查结果,有以下几种选择:
a)从视图模型访问图表控件,并以编程方式添加系列。但这不会破坏MVVM吗。另外,我如何从视图模型中获取对图表控件的引用?有什么API可以解决这个问题吗?使用事件触发器不起作用。(至少对于图表OnLoaded)
b)创建自己的Chart类,继承基本Chart类。这有多容易?有好的样品吗?
还有其他想法吗?
发布于 2014-04-15 16:15:22
我在尝试使用ToolKit图表时遇到了真正的问题,特别是关于绑定和如何以MVVM的方式使用的问题。所有示例都是XAML定义的序列(就像您的一样),或者绑定图表而不是数据的相当琐碎的方面。
我没有你所有的答案,因为我有同样的问题,但也许可以帮助我,因为我设法让一些东西以数据驱动的方式工作。
我使用Graphite Charts http://www.graphitecharts.com/主要是因为它们有不错的文档,所以我实际上可以开始工作,而不需要尝试整理每个类的用途和使用方法的基础知识。
(a)我在视图模型中执行所有数据访问,以响应视图中的命令。视图上的其他操作将由视图的代码隐藏处理,正是这些操作将从视图模型公开的数据创建新的系列集合、系列和数据点。例如,我从未找到将序列集合绑定到VM属性的方法,但在代码隐藏中构建序列工作得很好。事实上,它可能是一种更清晰的分离,因为序列(和数据点)是非常多的视图对象。
(b)我没有尝试实现我自己的。尝试石墨(或坚持使用silverlight ),并尝试使用VM获取数据但在视图中构建图表的方法。
https://stackoverflow.com/questions/23071132
复制相似问题