来自现代UI的StackedBarChart
本文关键字:StackedBarChart UI | 更新日期: 2023-09-27 18:29:17
我想在我的工具中添加一个包含堆叠条形图的统计窗口。
我曾在一个类似的应用程序中使用Modern 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>
但不幸的是,这是不可能的,你能想出其他办法吗?
您必须将Series绑定到您的Observable Collection,如下所示:
chart:StackedColumnChart ChartTitle="Statistics" ChartSubTitle="Multiple stacked bars" Series="{Binding Bars}">
</chart:StackedColumnChart>
您必须在CodeBehind/ViewModel 中的Observable Collection(本例中为条形)中定义您的系列
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是一个完整的条形图。TestClass保存您的值,看起来像这样:
public class TestClass
{
public string Category { get; set; }
public int Number { get; set; }
}
如果您需要任何进一步的信息,请随时询问。