WPF工具包如何正确添加系列

时间:2017-09-05 13:34:22

标签: c# wpf charts wpftoolkit

我正在尝试使用以下代码:

XAML:

<Grid x:Name="MainGrid">
    <charts:Chart x:Name="chart1"/>
</Grid>

我正在使用

xmlns:charts="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit

CODE

using System.Windows.Controls.DataVisualization.Charting;
public MainWindow()
{
            InitializeComponent();
        PointCollection pc = new PointCollection();

        for (int i = 0; i < 100; i++)
        {
            pc.Add(new System.Windows.Point { X = i, Y = i * 2 });
        }

        LineSeries series1 = new LineSeries();
        series1.DependentValuePath = "Y";
        series1.IndependentValuePath = "X";
        series1.ItemsSource = pc;
        chart1.Series.Add(series1);
}

但我收到不支持的异常错误

Exception thrown: 'System.NotSupportedException' in PresentationFramework.dll

Additional information: Cannot convert the value in attribute 'Property' to object of type 'System.Windows.DependencyProperty'.

该错误伴随着“没有可用的来源”和#39;屏幕, 我正在使用Visual Studio 2015.

我已经读过那个chart.series不是依赖属性,所以我的问题是为系列赋值的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

  

我已经读过那个chart.series不是依赖属性,所以我的问题是为系列赋值的正确方法是什么?

您应该在XAML中静态指定系列类型,并将点集合绑定为ItemsSource

<Grid x:Name="MainGrid">
    <charts:Chart x:Name="chart1">
        <charts:Chart.Series>
            <charts:LineSeries IndependentValuePath="X" DependentValuePath="Y" ItemsSource="{Binding points}"/>
        </charts:Chart.Series>
    </charts:Chart>
</Grid>

初始化代码:

public MainWindow()
{
    InitializeComponent();

    PointCollection pc = new PointCollection();

    for (int i = 0; i < 100; i++)
    {
        pc.Add(new System.Windows.Point { X = i, Y = i * 2 });
    }

    // in some appropriate datacontext, set some object that contains your points collection for the binding
    chart1.DataContext = new { points = pc };
}

注意:这并不能解释问题中提到的错误,它只是一种使用比问题方法更好的View-ViewModel分离来定义图表的方法。问题代码本身并不足以重现错误。