带有ObservableCollection的WinRT DataBinding

时间:2014-02-20 16:54:47

标签: c# data-binding windows-runtime winrt-xaml dependency-properties

在我的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

虽然SeriesDataObservableCollection,但OnItemSourceChanged方法不再被调用。

什么是/出错了我需要改变什么才能调用OnItemSourceChanged?

0 个答案:

没有答案