【问题标题】:how to create chart control in code behind wpf如何在 wpf 后面的代码中创建图表控件
【发布时间】:2018-09-23 22:54:42
【问题描述】:

我在 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 --> 图表:ClusteredColumnChart.Series --> 图表:图表系列

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

ClusteredColumnChart --> ChartSeries

【问题讨论】:

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


    【解决方案1】:

    您不能在代码中使用“{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;
    

    【讨论】:

    • 我使用了这个代码 var b = new Binding() { Source = dt };项目来源 = b;但不起作用得到错误无法将绑定转换为 IEnumerable
    猜你喜欢
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多