2

以前の投稿で、プロパティを DependencyProperty として登録する方法を尋ねました。私は答えを得て、それはうまくいきます。

しかし今、クリックでこの DependencyProperty にいくつかのアイテムを追加したいと思います。これはうまくいきません。DependencyProperty を登録する私のコードは次のとおりです。

public static readonly DependencyProperty ChartEntriesProperty = DependencyProperty.Register(
        "ChartEntries", typeof(ObservableCollection<ChartEntry>), typeof(ChartView),
        new FrameworkPropertyMetadata(OnChartEntriesChanged));

    private static void OnChartEntriesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {

    }

OnChartEntriesChanged-Event は、XAML から C# コードへのバインディングを実行するときに呼び出されます。しかし、後で(ボタンクリックで) ChartEntry を追加すると、イベントは発生しません。

誰かが理由を知っていますか?

4

4 に答える 4

1

OnChartEntriesChanged callback will be called when you will set the new instance of the ObservableCollection. You will have to listen to collection changed as below:

    private static void OnChartEntriesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        ((ObservableCollection<ChartView>)e.OldValue).CollectionChanged -= new System.Collections.Specialized.NotifyCollectionChangedEventHandler(ChartView_CollectionChanged);   
        ((ObservableCollection<ChartView>)e.NewValue).CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(ChartView_CollectionChanged);   
    }

    static void ChartView_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {

    }
于 2013-10-24T06:53:13.190 に答える