来自现代UI的StackedBarChart

时间:2014-11-06 09:24:16

标签: c# wpf visual-studio-2010 xaml user-interface


我想在我的工具中添加一个包含堆积条形图的统计窗口。
我用于类似的应用程序现代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>

但不幸的是,这是不可能的,你能想到其他任何方式吗?

1 个答案:

答案 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; }
}

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