来自现代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>

但不幸的是,这是不可能的,你能想出其他办法吗?

来自现代UI的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; }
}

如果您需要任何进一步的信息,请随时询问。