如何在 wpf 后面的代码中创建图表控件
how to create chart control in code behind wpf
我在 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 个控件在彼此内部
chart:ClusteredColumnChart --> chart:ClusteredColumnChart.Series -->
chart:ChartSeries
但在代码隐藏中我找不到这 3 个控件,只使用了 2 个控件
ClusteredColumnChart --> ChartSeries
您不能在代码中使用“{Binding}”。
您必须使用
创建绑定
new System.Windows.Data.Binding(...)
更新:
并回答你的第二个问题:< chart:ClusteredColumnChart.Series > 是一个属性而不是一个对象。
更新 2:
绑定示例:
var b = new System.Windows.Data.Binding {Source = dt};
series.SetBinding(ChartSeries.ItemsSourceProperty, b);
或者,如果您想直接设置 ItemsSource,只需使用它而不使用任何绑定:
series.ItemsSource = dt;
我在 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 个控件在彼此内部
chart:ClusteredColumnChart --> chart:ClusteredColumnChart.Series --> chart:ChartSeries
但在代码隐藏中我找不到这 3 个控件,只使用了 2 个控件
ClusteredColumnChart --> ChartSeries
您不能在代码中使用“{Binding}”。
您必须使用
创建绑定new System.Windows.Data.Binding(...)
更新: 并回答你的第二个问题:< chart:ClusteredColumnChart.Series > 是一个属性而不是一个对象。
更新 2: 绑定示例:
var b = new System.Windows.Data.Binding {Source = dt};
series.SetBinding(ChartSeries.ItemsSourceProperty, b);
或者,如果您想直接设置 ItemsSource,只需使用它而不使用任何绑定:
series.ItemsSource = dt;