0

在我的 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 LightViewModelBase顺便说一句。有没有人有办法解决吗?

4

1 回答 1

4

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

您能否澄清一下这是否也适用于您,如果不是 - 您使用的是我们的控件版本吗?

于 2013-04-16T13:06:35.537 回答