2011-03-31 67 views
0

我有一個自定義控件,該屬性是另一個自定義控件的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 

回答

0

簡單的解決方案(也許不是最好的),但它讓我找到了我想要的東西。

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

通過你與你是剛剛訂閱的財產本身變化的依賴項屬性的元數據註冊事件,不更改集合(添加/刪除項目)需要通過事件登記認購CollectionChangedObservableCollection<T>曝光

+0

謝謝你的迴應。我明白你在說什麼。但我不知道如何更改DP以包含CollectionChanged。你可以授予代碼片段嗎? – Paul 2011-03-31 21:17:46