ObservableCollection als DependencyProperty

Ich bin erstellen einer app, in der eine Liste von Objekten, die überwacht werden sollen und übersetzt werden, bevor Sie angezeigt wird, auf eine Gruppe von Steuerelementen. Zu diesem Zweck habe ich ein DependencyProperty vom Typ ObservableCollection (BackupEntry wird eine eigene Klasse definieren, Informationen über eine Datenbank). Was ich will, geschehen wird, das Steuerelement gebunden werden, um eine ObservableCollection in eine MVVM. Diese Sammlung könnte verwendet werden, um zunächst das Steuerelement laden. Dann, wenn ein Eintrag über das control-interface, es sollte Hinzugefügt werden, um die interne ObservableCollection, die definiert ist als eine DependencyProperty und zeigen sich in der Auflistung im MVVM, da Sie gebunden sind. Hier ist der code, den ich verwende:

protected ObservableCollection<BackupEntry> _BackupItems = new ObservableCollection<BackupEntry>();

public static readonly DependencyProperty BackupItemsProperty = DependencyProperty.Register("BackupItems", typeof(ObservableCollection<BackupEntry>), typeof(ExplorerWindow));

public ObservableCollection<BackupEntry> BackupItems
{
    get { return (ObservableCollection<BackupEntry>)GetValue(BackupItemsProperty); }
    set { SetValue(BackupItemsProperty, value); }
}

public ExplorerWindow()
{
    DefaultStyleKeyProperty.OverrideMetadata(typeof(ExplorerWindow), new FrameworkPropertyMetadata(typeof(ExplorerWindow)));
    SetValue(BackupItemsProperty, _BackupItems);
    _BackupItems.CollectionChanged += new NotifyCollectionChangedEventHandler(BackupItems_CollectionChanged);
}

void BackupItems_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    throw new NotImplementedException();
}

Und in die test-app:

<my:ExplorerWindow Name="ew" HorizontalAlignment="Left" VerticalAlignment="Top" Width="503" Height="223" BackupItems="{Binding BackupListItems}" />

Erstellte ich eine Taste auf dem Bildschirm in meiner test-app. Wenn darauf geklickt wird, wird ein Element Hinzugefügt BackupListItems. BackupItems_CollectionChanged nie aufgerufen wird und das neue Element wird nicht angezeigt in meiner Sammlung in meiner Kontrolle. Bin ich völlig aus der Bahn hier? Was muss ich tun damit dies funktioniert?

Ist der obige code Ihrer ViewModel ? Wenn dem so ist, warum sind Sie mit Abhängigkeit Objekten und nicht als Eigenschaften,
Nein, der obige code ist codebehind für meine Steuerung. Es gibt keine direkte Korrelation zwischen den Daten, die in die Liste aufgenommen und die Kontrollen, die verwendet werden, um es anzuzeigen. Die DependencyObject-gemeint ist zum enttarnen in der Liste, so dass es gebunden werden kann und Daten an und von der Steuerung.

InformationsquelleAutor Dirk Dastardly | 2011-08-12

Schreibe einen Kommentar