如何在WPF之后的代码中创建图表控件

时间:2018-09-22 18:55:26

标签: c# wpf charts code-behind modern-ui

我在xaml中有一个图表控件,一切正常,但是现在我想使用代码隐藏创建此图表: 这是我的xaml:

<chart:ClusteredColumnChart>
    <chart:ClusteredColumnChart.Series>
        <chart:ChartSeries
            Name = "chart"
            DisplayMember = "Date"
            ItemsSource = "{Binding}"
            ValueMember = "Scores" />
    </chart:ClusteredColumnChart.Series>
</chart:ClusteredColumnChart >

我写了这段代码,但是没有生成数据

ClusteredColumnChart chart = new ClusteredColumnChart();
ChartSeries series = new ChartSeries
{
    DisplayMember = "Date",
    ItemsSource = "{Binding}",
    ValueMember = "Scores"
};
series.ItemsSource = dt;
chart.Series.Add(series);
maingrid.Children.Add(chart);

我想念什么?
在我看来,在xaml代码中3个控件相互重叠

  

图:ClusteredColumnChart->图表:ClusteredColumnChart.Series->   图表:ChartSeries

但是在隐藏的代码中,我找不到这3个控件,而只使用了2个控件

  

ClusteredColumnChart-> ChartSeries

1 个答案:

答案 0 :(得分:2)

您不能在代码中使用“ {Binding}”。

您必须使用

创建绑定
new System.Windows.Data.Binding(...)

请参阅:https://docs.microsoft.com/en-us/dotnet/api/system.windows.data.binding.-ctor?view=netframework-4.7.2

更新: 并回答第二个问题:是属性而不是对象。

更新2: 绑定示例:

var b = new System.Windows.Data.Binding {Source = dt};
series.SetBinding(ChartSeries.ItemsSourceProperty, b);

或者,如果您想直接设置ItemsSource,只需使用它而无需任何绑定:

series.ItemsSource = dt;