2011-08-02 13 views
1

私は、いくつかのプロパティを持つ円形ゲージを表すWPFユーザーコントロールを持っています。私がアプリケーションで直接使用すると、すべてうまく動作しますが、Expression Blendでプロパティをテストし、期待されるアニメーションをシミュレートするために、コレクションの依存プロパティが必要です。問題は、Expression Blendを使用してコレクションプロパティにアイテムを追加するときです。 "SetValue"が呼び出されていません。私は間違って何をしていますか?あなたは(プロパティが既に設定されている)のコレクションを変更している、プロパティを設定されていないためだコレクションの依存関係のプロパティが機能しない

public static readonly DependencyProperty RangesProperty = 
     DependencyProperty.Register("Ranges ", typeof(CircularRangeInfoList), typeof(UserControl1), new FrameworkPropertyMetadata(new CircularRangeInfoList())); 

    [Category("Test Collection")] 
    public CircularRangeInfoList Ranges 
    { 
     get { return (CircularRangeInfoList)GetValue(RangesProperty); } 
     set { SetValue(RangesProperty, value); } 
    } 
public class CircularRangeInfoList : ObservableCollection<CircularRangeInfo> 
{ 
    public CircularRangeInfoList() 
    { 
    } 
} 

答えて

1

。コレクションの変更を監視する必要がある場合は、CollectionChangedイベントのハンドラーを追加する必要があります。

詳細はquestionを参照してください。

+0

よく私は 私のUserControl1内のコレクションの外に通知を受け取ることに興味があります。そのような私はすでにプロパティを設定し、それは一度だけ働いた...私は私のコレクションを変更しているとはどういう意味ですか? – rsleiman

+0

@rsleiman - 「コレクションにアイテムを追加する」とは、コレクションの変更(アイテムの追加、アイテムの削除、アイテムの移動、アイテムの置き換え)を意味します。コレクションの変更時期を知りたい場合は、CollectionChangedを使用する必要があります。プロパティーが変更されたときとは異なります。 – CodeNaked

+0

ああ、私は参照してください、しかし、私は後で、私のカスタムリストをインスタンス化して、CollectionChangedイベントをサポートするコードを変更しました。それはうまくいくようです。ありがとうございました。 – rsleiman

0

依存関係プロパティを登録すると、specify a static property changed callbackが登録されます。これは、依存関係プロパティーが変更されたときに呼び出されます。このコールバックデリゲート内で、カスタムコレクションのCollectionChangedイベントにイベントハンドラを添付する必要があります。

関連する問題