2009-03-12 9 views
0

Ich habe eine ObservableCollection ItemsSource einer Listbox zugewiesen. Listbox verwendet eine DataTemplate, die eine Benutzersteuerung enthält, in der Elemente an die Eigenschaften jedes Listenfelds gebunden sind.Wie bekomme ich Count of Parent Sammlung von Kind?

Ich habe eine auf und ab-Taste auf der Benutzersteuerung, die ein Element in der Liste nach oben oder unten bewegt. Die Liste ist nach der Eigenschaft sortiert, die ich ändere. Klicken Sie nach oben oder unten, die DisplayOrder-Eigenschaft wurde geändert, ich verwende INotifyProperty, um die ObservableCollection zu informieren, die neu sortiert werden muss.

Was ist der beste Weg für die Benutzersteuerung, um die Anzahl der Elemente zu erhalten, so dass ich die Schaltfläche deaktivieren kann, wenn ein Element den unteren Rand der Liste erreicht. (Die Spitze ist einfach, ich vergleiche mit 0)

Antwort

0

Ich sehe zwei Möglichkeiten, dies zu handhaben.

Die erste besteht darin, ein Handle Ihrer Sammlung an jedes Ihrer Elemente zu übergeben (wenn sie der Sammlung hinzugefügt werden), damit sie berechnen können, ob sie das erste oder letzte Element selbst sind.

Die andere besteht darin, beschreibbare Eigenschaften für Ihre Elemente verfügbar zu machen, z. B. CanGoUp und CanGoDown, und Ihr übergeordnetes Steuerelement wird verantwortlich für das Festlegen dieser Eigenschaften ordnungsgemäß. Ich bevorzuge diese Lösung, da sie das Verhalten Ihrer Elternliste von den untergeordneten Elementen entkoppelt. Obwohl die Schaltflächen "Nach oben/Nach unten" auf den untergeordneten Elementen platziert sind, handelt es sich in Wirklichkeit um eine Funktionalität der übergeordneten Liste.

0

listBox1.Items.Count? this.Parent.Controls.Count?

Verwandte Themen