2011-08-02 108 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