WPF DataVisualization堆积柱形图绑定

时间:2016-05-06 12:54:01

标签: wpf charts

我将生成Stacked柱形图,它将显示在x轴城市和y轴上,是列中性别的计数。如何绑定图表和这些数据:

 List<Cities> Cities = new List<Cities>()
    {
        new Cities
        {
            Name = "Paris",
            Genders = new Genders()
            {
                Man = 350000,
                Woman = 436000
            }
        },
        new Cities()
        {
            Name = "London",
            Genders = new Genders()
            {
                Man = 698056,
                Woman = 736982
            }
        }
    };

我正在尝试生成系列:

        int i = 0;
        foreach (var city in Cities)
        {
            Series s1 = new ColumnSeries();
            s1.Title = city.Name;
            s1.Name = "S"+i;
            StackedColumnChart.Series.Add(s1);
            i++;
        }

我不知道如何绑定数据。感谢

2 个答案:

答案 0 :(得分:1)

您可以尝试下载LightningChart的试用版,其中包含针对Winfroms的演示示例,带有不可绑定,可半绑定和完全可绑定示例的Wpf。

您可以轻松查看源代码示例,例如ExampleStackedBars。

在后面的代码中,您可以创建一个字段,该字段将绑定到图表BarSeriesCollection属性:

public static readonly DependencyProperty BarSeriesProperty =
        DependencyProperty.Register(
            "BarSeries",
            typeof(BarSeriesCollection),
            typeof(ExampleStackedBars)
        );

    public BarSeriesCollection BarSeries
    {
        get { return GetValue(BarSeriesProperty) as BarSeriesCollection; }
        set { SetValue(BarSeriesProperty, value); }
    }

创建新实例并将数据添加到集合后:

BarSeries = new BarSeriesCollection();
GenerateData();

在XAML中,您可以使用以下行轻松绑定它:

<lcusb:LightningChartUltimate.ViewXY>
            **<lcusb:ViewXY BarSeries="{Binding BarSeries}">**
                <lcusb:ViewXY.BarViewOptions>
                    <lcusb:BarViewOptions BarSpacing="30" Grouping="ByIndexFitWidth" Stacking="Stack" IndexGroupingFitGroupDistance="20"/>
                </lcusb:ViewXY.BarViewOptions>
            </lcusb:ViewXY>
        </lcusb:LightningChartUltimate.ViewXY>
</lcusb:LightningChartUltimate>

或在属性树中设置绑定路径

答案 1 :(得分:0)

Sparrow toolkit中的示例适用于其他图表类型。我需要堆积条形图。我的图表必须在x轴城市中,并且每个城市必须是列中的多个值。这是我的图表:

 <charting:Chart
            Grid.Column="0"
            Grid.Row="0"
            x:Name="StackedColumnChart"
            Title="Stacked Column"
            Margin="5">
        <charting:StackedColumnSeries>
        </charting:StackedColumnSeries>
    </charting:Chart>

我不知道什么是系列。系列是列?如何将多个值(在我的示例性别中)分配给一列?