我必须做两件事情来得到它与VS2010工作。首先是在为ChartBase设置DataContext时,数据绑定没有被引入。这导致没有数据绘图。为了解决这个问题,我改变ChartBase.OnSeriesSourceChanged使用加载内容,然后遍历,并将所有数据绑定LoadDataTemplate:
private void OnSeriesSourceChanged(IEnumerable oldValue, IEnumerable newValue)
{
this.Series.Clear();
if (newValue != null)
{
foreach (object item in newValue)
{
if (SeriesTemplate != null)
{
ChartSeries series = LoadDataTemplate<ChartSeries>(SeriesTemplate, item);
if (series != null)
{
// set data context
series.DataContext = item;
this.Series.Add(series);
}
}
}
}
UpdateGroupedSeries();
}
private static T LoadDataTemplate<T>(DataTemplate template, object dataContext)
where T : FrameworkElement
{
DependencyObject element = template.LoadContent();
T view = element as T;
view.DataContext = dataContext;
var enumerator = element.GetLocalValueEnumerator();
while (enumerator.MoveNext())
{
var bind = enumerator.Current;
if (bind.Value is BindingExpression)
{
view.SetBinding(bind.Property, ((BindingExpression)bind.Value).ParentBinding);
}
}
return view;
}
其次,我不得不将项目更改为包括正确的Generic.xaml文件。请务必使用De.TorstenMandelkow.MetroChart.WPF/Themes下的那个。它需要包含BaseChartStyle。
HTH