在我的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。有没有人有解决方案?
答案 0 :(得分:4)
当可观察集合被更改时,它会引发RadChart侦听的集合更改事件,并且它将更新其UI。我为您准备了一个参考我们的Q1 2013 SDK的示例。你可以在这里找到它 - https://www.dropbox.com/s/1zv32gqsx1vryen/RadChartObsCollection.zip
您能否澄清一下这是否适合您,如果没有 - 您使用的是哪种版本的控件?