2013-03-27 33 views
5

我在寻找一个好的图表控件,并找到“Modern UI (Metro) Charts for Windows 8, WPF, Silverlight” 这个控件看起来非常好,但我需要Visual Studio 2010和4.0。原始源代码是用Visual Studio 2012和4.5编写的,所以我尝试用类文件创建一个新项目。一切运作良好。我可以编译类和调试通过。但结果是一个空的窗口。 我不知道错误在哪里。该文件是不变的这就是为什么我上传了一些照片:“适用于Windows 8,WPF,Silverlight的现代UI(Metro)图表”适用于.net 4.0

工作样例 the working sample

复制4.0样品 copied 4.0 sample

工作样例史努比 the working sample Snoop

复制4。 0样品史努比 copied 4.0 sample Snoop

回答

0

我必须做两件事情来得到它与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

相关问题