سؤال

إذا لدي عنصر المستمدة من ItemsControl، يمكنني الوصول إلى مجموعة من انها الأطفال حتى أستطيع أن حلقة من خلالها لتنفيذ إجراءات معينة؟ لا أستطيع العثور على ما يبدو أي وسيلة سهلة في الوقت الراهن.

هل كانت مفيدة؟

المحلول

وحل مشابها لسيب ولكن ربما مع أداء أفضل:

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

نصائح أخرى

ونرى ما اذا كان هذا يساعدك على الخروج:

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

وهناك فرق بين العناصر المنطقية في التحكم وUIElement.

لتحديد عناصر التحكم التابعة ربط بيانات ItemsControl ل(مثل ToggleButton)، يمكنك استخدام هذا:

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

    }
}

وأفترض ItemsControl.Items[index] لا تعمل، بعد ذلك؟

وأنا لا يجري مضحك، وأنا لم فحص لنفسي - وهذا مجرد تخمين أول. غالبا ما تحكم سيكون لها خاصية العناصر مفهرس، حتى لو كان ربط بيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top