2009-03-12 9 views
0

J'ai une ObservableCollection affectée à ItemsSource d'une zone de liste. Listbox utilise un DataTemplate qui possède un contrôle userc qui contient des éléments liés aux propriétés de chaque listboxitem.Comment obtenir le compte de la collection parent de l'enfant?

J'ai un bouton haut et bas sur la commande usercontrol qui déplace un élément vers le haut ou le bas de la liste. La liste est triée par la propriété que je change. Cliquez vers le haut ou vers le bas, la propriété DisplayOrder est modifiée, j'utilise INotifyProperty pour indiquer à ObservableCollection qu'il doit être trié de nouveau.

Quelle est la meilleure façon pour usercontrol d'obtenir le nombre d'éléments afin que je puisse désactiver le bouton bas lorsqu'un élément atteint le bas de la liste. (Le sommet est facile, je compare à 0)

Répondre

0

Je vois deux façons de gérer cela. Le premier consiste à passer un descripteur de votre collection à chacun de vos objets (lorsqu'ils sont ajoutés à la collection) afin qu'ils puissent calculer s'ils sont eux-mêmes le premier ou le dernier élément.

L'autre est d'exposer les propriétés accessibles en écriture sur vos éléments, tels que CanGoUp et CanGoDown, et votre contrôle parent devient responsable de la définition de ces propriétés correctement. Je préfère cette solution car elle dissocie le comportement de votre liste parente des éléments enfants. Même si les boutons haut/bas sont placés sur vos éléments enfants, c'est vraiment une fonctionnalité de la liste parente.

0

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

Questions connexes