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