我想在我的工具中添加一个包含堆积条形图的统计窗口。
我用于类似的应用程序现代UI(Metro)图表创建单个图表,它工作正常。
这一次,我需要显示一个未知数量的StackedBarChart,而我却遇到了问题。
我喜欢你对解决方案或解决方案的想法
这是我的单个图表的代码(工作正常):
<chart:StackedBarChart Width="400" Height="400" ChartTitle="Statistics" ChartSubTitle="A single stacked bar">
<chart:StackedBarChart.Series>
<chart:ChartSeries
SeriesTitle="Y axis name"
DisplayMember="Name"
ValueMember="Number"
ItemsSource="{Binding SomeObservableCollectionOfNamesAndNumbers}"/>
</chart:StackedBarChart.Series>
</chart:StackedBarChart>
我想做的是这样的事情(使用 itemsSource ):
<chart:StackedBarChart Width="400" Height="400" ChartTitle="Statistics" ChartSubTitle="Multiple stacked bars">
<chart:StackedBarChart.Series ItemsSource="{SomeObservableCollectionOfSomeObservableCollectionOfNamesAndNumbers}">
<chart:ChartSeries
SeriesTitle="{binding SomeObservableCollectionOfNamesAndNumbers.Name}"
DisplayMember="Name"
ValueMember="Number"
ItemsSource="{Binding SomeObservableCollectionOfNamesAndNumbers}"/>
</chart:StackedBarChart.Series>
</chart:StackedBarChart>
但不幸的是,这是不可能的,你能想到其他任何方式吗?
答案 0 :(得分:1)
你必须像这样将Series绑定到你的Observable Collection:
chart:StackedColumnChart ChartTitle="Statistics" ChartSubTitle="Multiple stacked bars" Series="{Binding Bars}">
</chart:StackedColumnChart>
您必须在Code Behind / ViewModel中的Observable Collection(本例中为Bars)中定义您的系列
ObservableCollection<TestClass> blocks = new ObservableCollection<TestClass>();
ChartSeries chartSerie = new ChartSeries();
chartSerie.SeriesTitle = "Some Title"
chartSerie.DisplayMember = "Category";
chartSerie.ValueMember = "Number";
Bars.Add(chartSerie);
chartSerie.ItemsSource = blocks;
blocks = new ObservableCollection<TestClass>();
块持有单个堆栈,ChartSerie是一个完整的Bar。 TestClass保存您的值,如下所示:
public class TestClass
{
public string Category { get; set; }
public int Number { get; set; }
}
如果您需要任何进一步的信息,请随时询问。