Frage

Wenn ich eine Komponente aus ItemsControl abgeleitet haben, kann ich auf eine Sammlung davon Kinder ist so, dass ich durch sie Schleife, bestimmte Aktionen auszuführen? Ich kann keine einfache Möglichkeit, im Moment zu finden scheinen.

War es hilfreich?

Lösung

Eine Lösung ähnlich wie Seb aber wahrscheinlich mit einer besseren Leistung:

for(int i = 0; i < itemsControl.Items.Count; i++)
{
    UIElement uiElement =
        (UIElement)itemsControl.ItemContainerGenerator.ContainerFromIndex(i);
}

Andere Tipps

Sehen Sie, wenn dies hilft Ihnen aus:

foreach(var item in itemsControl.Items)
{
    UIElement uiElement =
        (UIElement)itemsControl.ItemContainerGenerator.ContainerFromItem(item);
}

Es gibt einen Unterschied zwischen logischen Elementen in einer Steuerung und eine UIElement.

Um ItemsControl des Databound geordneten Steuerelemente (wie ein ToggleButton) zu identifizieren, können Sie diese verwenden:

for (int i = 0; i < yourItemsControl.Items.Count; i++)
{

    ContentPresenter c = (ContentPresenter)yourItemsControl.ItemContainerGenerator.ContainerFromItem(yourItemsControl.Items[i]);
    ToggleButton tb = c.ContentTemplate.FindName("btnYourButtonName", c) as ToggleButton;

    if (tb.IsChecked.Value)
    {
        //do stuff

    }
}

Ich gehe davon aus ItemsControl.Items[index] nicht funktioniert, dann?

Ich bin nicht lustig, und ich habe für mich nicht überprüft - das ist nur meine erste Vermutung. Meistens ein Steuerelement einen Artikel Indexer Eigenschaft haben, auch wenn es Databound.

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