Frage

Ich erstelle ein Usercontrol (TableWithFilter.xaml) mit einer Abhängigkeitseigenschaft (Quelle). Die Usercontrol ist eine Tabelle mit einer Quelleigenschaft für die verschiedene Elemente. Ich habe die XAML und stellen Sie die Quelleigenschaft über die XAML Bindung. So weit so gut.

Aber wenn der Wert der Abhängigkeitseigenschaft geändert wird, wird die definierte Callback-Methode nicht aufgerufen. Deshalb kann ich nicht die Einträge in meiner Tabelle aktualisieren. Hat jemand eine Idee, warum die Callback-Methode aufgerufen wird, nicht wahr?

Hier ist die Definition meiner Eigenschaft in der Klasse "TableWithFilter":

Public Shared ReadOnly SourceProperty As DependencyProperty = _
        DependencyProperty.Register("Source", GetType(List(Of TableViewItem)), GetType(TableWithFilter), _
                                    New FrameworkPropertyMetadata(Nothing, New PropertyChangedCallback(AddressOf TableWithFilter.ChangeSource)))

und die Callback-Methode:

 Private Shared Sub ChangeSource(ByVal source As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
        Dim table As TableWithFilter = source
        table.Source = e.NewValue
    End Sub

und hier die XAML:

<Border Grid.Row="1" Grid.Column="1" BorderBrush="{StaticResource ElementBorder}" BorderThickness="1">
    <local:TableWithFilter x:Name="SearchResultTable" Source="{Binding Source={StaticResource contentFacade}, Path=ContentList}" />    
</Border>

Wenn das Attribut „ContentList“ geändert wird, ich expet, dass die „ChangeSource“ -Methode in der TableWithFilder Klasse aufgerufen wird. Aber dies ist nicht der Fall. Nachdem ich das ContentList Attribut geändert wird, erhöhe ich das folgende Ereignis:

RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("ContentList"))

Thx für alle Ideen.

War es hilfreich?

Lösung

Es gibt einen Unterschied zwischen dem gesamten Gebäude zu ändern (das heißt ein neuer Verweis auf eine Auflistung spezifiziert wird) gegenüber dem Inhalt der Liste selbst zu verändern. Sammlungen haben ihre eigene Änderungsbenachrichtigung Schnittstelle INotifyCollectionChanged . Also, was würden Sie tun müssen, ist hören für die Eigenschaft ändern Sie haben jetzt und innerhalb davon, haken Sie die INotifyCollectionChanged Ereignisse sich auf die neue Kollektion Instanz und dann auf diejenigen reagieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top