我正在尝试使用以下代码:
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不是依赖属性,所以我的问题是为系列赋值的正确方法是什么?
答案 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分离来定义图表的方法。问题代码本身并不足以重现错误。