依赖属性已更改事件未在设计时触发Collection属性

时间:2011-03-31 20:41:44

标签: wpf

我有一个自定义控件,其属性是另一个自定义控件的ObservableCollection。我似乎无法在设计时触发DependencyProperty更改事件。我试过使用CoerceValueCallback这也不会开火。任何人都可以给我一些方向。其他所有东西在运行时工作得很好我只是无法解决这个问题所以我可以在设计时更新控件。非常感谢提前。

Public Shared ReadOnly ArcsProperty As DependencyProperty = DependencyProperty.Register("Arcs", GetType(ObservableCollection(Of OPCWPF.OPCWPFArcControl)), GetType(OPCWPFPie), New PropertyMetadata(New ObservableCollection(Of OPCWPF.OPCWPFArcControl), New PropertyChangedCallback(AddressOf ArcsPropertyChanged), New CoerceValueCallback(AddressOf CoerceArcs)))

 ' Arc Quantity
<Description("Collection of Arcs"), _
Category("Common Properties")> _
Public Property Arcs() As ObservableCollection(Of OPCWPF.OPCWPFArcControl)
    Get
        Return DirectCast(Me.GetValue(ArcsProperty), ObservableCollection(Of OPCWPF.OPCWPFArcControl))
    End Get

    Set(ByVal value As ObservableCollection(Of OPCWPF.OPCWPFArcControl))
        Me.SetValue(ArcsProperty, value)
    End Set
End Property

2 个答案:

答案 0 :(得分:0)

通过您使用依赖项属性元数据注册的事件,您只是订阅属性本身的更改,不会更改为需要通过注册注册的集合(添加/删除项目)CollectionChanged

公开的事件ObservableCollection<T>

答案 1 :(得分:0)

简单的解决方案(可能不是最好的)但它让我得到了我想要的东西。

 Public Overrides Sub OnApplyTemplate()
    MyBase.OnApplyTemplate()
    AddHandler Arcs.CollectionChanged, AddressOf UpdateControl
 End Sub