如何更新RadCartesianChart / ObservableCollection

时间:2013-04-15 00:39:17

标签: c# data-binding telerik windows-runtime observablecollection

在我的Windows 8应用程序中,我有一个如下所示的RadCartesianChart:

<telerikChart:LineSeries ItemsSource="{Binding GraphData, Mode=TwoWay}" ShowLabels="True">
    <telerikChart:LineSeries.CategoryBinding>
        <telerikChart:PropertyNameDataPointBinding PropertyName="Category" />
    </telerikChart:LineSeries.CategoryBinding>
    <telerikChart:LineSeries.ValueBinding>
        <telerikChart:PropertyNameDataPointBinding PropertyName="Value" />
    </telerikChart:LineSeries.ValueBinding>
</telerikChart:LineSeries>

它与这个系列绑定:

public ObservableCollection<Data> GraphData
{
    get { return _graphData; }
    set
    {
        if (_graphData != value)
        {
            _graphData = value;
            RaisePropertyChanged(() => GraphData);
        }
    }
}

包含这些对象:

public class Data : ViewModelBase
{
    private string _category;
    private int _value;

    public string Category
    {
        get { return _category; }
        set
        {
            if (_category != value)
            {
                _category = value; 
                RaisePropertyChanged(() => Category);
            }
        }
    }

    //etc
}

RadCartesianChart绑定了一些默认数据,但我想在运行时替换这些数据。但不知怎的,我不能让这个工作......我已经尝试过简单的做法:

GraphData = new ObservableCollection<Data>(someData);

我尝试过这样的事情:

GraphData.Clear();
GraphData.Add(object1);
GraphData.Add(object2);
//etc

但图表不会更新。我意识到这可能是一个ObservableCollection问题,但我无法让它工作。

我正在使用MVVM Light ViewModelBase btw。有没有人有解决方案?

1 个答案:

答案 0 :(得分:4)

当可观察集合被更改时,它会引发RadChart侦听的集合更改事件,并且它将更新其UI。我为您准备了一个参考我们的Q1 2013 SDK的示例。你可以在这里找到它 - https://www.dropbox.com/s/1zv32gqsx1vryen/RadChartObsCollection.zip

您能否澄清一下这是否适合您,如果没有 - 您使用的是哪种版本的控件?