c# - metrowindow - “用于Windows 8,WPF,Silverlight的现代UI(Metro)图表”



.net xaml (2)

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

工作样本

复制4.0样本

工作样本Snoop

复制4.0样本Snoop

https://ffff65535.com


我必须做两件事才能使它与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






charts