使用WPF工具包的简单条形图?

时间:2015-03-17 10:21:08

标签: c# wpf xaml mvvm charts

我试图按照这个例子来制作一个带有MVVM的简单条形图:

Code Project MVVM Charting

但是无法显示任何图表。这是我的视图模型,它公开KeyValuePair ObservableCollection

 private ObservableCollection<KeyValuePair<string, int>> _ChartParametersPairedObservableList;
    public ObservableCollection<KeyValuePair<string, int>> ChartParametersPairedObservableList
    {
        get { return _ChartParametersPairedObservableList; }
        set
        {
            _ChartParametersPairedObservableList = value;
            OnPropertyChanged("ChartParametersPairedObservableList");
        }
    }

并从另一个ObservableCollection实例化/填充集合:

private void GetChartParametersAndBuildKeyValuePairs()
    {
        ChartParametersObservableList = new ObservableCollection<ChartParameters>(IsesService.GetChartParameters(Country, ArticleType));
        ChartParametersPairedObservableList = new ObservableCollection<KeyValuePair<string, int>>();

        foreach (var item in ChartParametersObservableList)
        {              
            ChartParametersPairedObservableList.Add(new KeyValuePair<string, int>(item.operator_name_abrv, item.countAll));
        }
    }

此集合按预期工作。我知道属性已更改正在工作,因为我可以从视图中将DataGrid绑定到集合没问题。问题是当我尝试绑定到图表时。

以下是我对图表的Xaml视图:

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

<DVC:Chart Canvas.Top="80" Canvas.Left="10" ItemsSource="{Binding ChartParametersPairedObservableList}" Width="400" Height="250">
            <DVC:Chart.Series>
                <DVC:BarSeries ItemsSource="{Binding ChartParametersPairedObservableList}"
                               IndependentValueBinding="{Binding Path=Key}" 
                               DependentValueBinding="{Binding Path=Value}">
                    </DVC:BarSeries>
            </DVC:Chart.Series>
            </DVC:Chart>

不幸的是,我在运行时没有在我的图表中获得任何数据输出。我在输出窗口中遇到绑定错误。无法绑定到价值&amp;键:

BindingExpression path error: 'Key' property not found on 'object'
BindingExpression path error: 'Value' property not found on 'object'

我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用适用于Windows 8,WPF,Silverlight的现代UI(Metro)图表解决了这个问题。

modernuicharts

伟大的图书馆和现代的外观,没有更多的Windows 95造型!