在我的ViewModel中,我定义了以下ObservableCollection
。
private readonly ObservableCollection<ChartSerie> _seriesData = new ObservableCollection<ChartSerie>();
public ObservableCollection<ChartSerie> SeriesData
{
get { return _seriesData; }
}
在我的页面上,我绑定了这个集合。
ItemSource="{Binding SeriesData}"
ItemSource是我控件中的DependencyProperty。
public object ItemSource
{
get { return (object)GetValue(ItemSourceProperty); }
set { SetValue(ItemSourceProperty, value); }
}
public static readonly DependencyProperty ItemSourceProperty =
DependencyProperty.Register("ItemSource", typeof(object), typeof(MultipleColumnChart), new PropertyMetadata(null, OnItemSourceChanged));
控件继承自Grid。我已将OnItemSourceChanged
定义为以下内容。
private static void OnItemSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var chart = d as MultipleDoubleColumnChart;
foreach (var serie in (IList)chart.ItemSource)
{
var child = new ColumnChart();
...
...
}
}
创建Page和ViewModel时,SeriesData集合为空,对OnItemSourceChanged
的第一次也是唯一的调用不执行任何操作(如预期的那样)。点击页面上的某个按钮后,数据被加载,新的ChartSerie对象被创建并添加到SeriesData
。
虽然SeriesData
是ObservableCollection
,但OnItemSourceChanged
方法不再被调用。
什么是/出错了我需要改变什么才能调用OnItemSourceChanged?