2014-01-23 2 views
0

Я пытаюсь получить добавленный элемент управления пользователя в списке, но не смог найти правильный способ его получить.Как получить элемент управления пользователя в элементе шаблона данных списка

Я использую ниже для поиска пользовательских элементов управления в ListBox связанного приложения, но из 10 элементов, которые он не смог найти 3 или 4.

private T FindFirstElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject 
     { 
      var count = System.Windows.Media.VisualTreeHelper.GetChildrenCount(parentElement); 
      if (count == 0) 
       return null; 

      for (int i = 0; i < count; i++) 
      { 
       var child = System.Windows.Media.VisualTreeHelper.GetChild(parentElement, i); 

       if (child != null && child is T) 
        return (T)child; 
       else 
       { 
        var result = FindFirstElementInVisualTree<T>(child); 
        if (result != null) 
         return result; 

       } 
      } 
      return null; 
     } 

код для кнопки мыши, чтобы найти пользовательский элемент управления.

private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      if (!downloadClicked) 
      { 
       downloadClicked = true; 
       SuraWithProgressBar prg = null; 
       ListBoxItem item = null; 
       for (int rowIndex = 0; rowIndex < lsbQuranData.Items.Count; rowIndex++) 
       { 
        item = this.lsbQuranData.ItemContainerGenerator.ContainerFromIndex(rowIndex) as ListBoxItem; 
        if (item != null) 
        { 
         prg = FindFirstElementInVisualTree<SuraWithProgressBar>(item); 
         if (prg != null) 
         { 
          //Do Somthing 
          prg.addButtonClickInterface(this); 
         } 
        } 
       } 
      } 
      else 
       MessageBox.Show("Please wait, downloading..."); 
     } 

Как я уже упоминал из 10, он не может найти 3-4 предмета. Я ищу подходящий способ найти мой пользовательский контроль внутри списка.

Спасибо!

+0

После многого головной боли я нахожу решение здесь (http://stackoverflow.com/questions/9897141/wp7-visualtreehelper-to-loop-through-all-listbox-items) и (http://msdn.microsoft. ком/EN-US/библиотека/окно/приложение/jj709920.aspx) – ARH

ответ

0

После многих головной боли я узнать решение в два ниже ссылках:

WP7 - VisualTreeHelper to loop through all ListBox Items

http://msdn.microsoft.com/en-us/library/windows/apps/jj709920.aspx

Добавить шаблон для вашего ListBox и изменить SerializeStackPanel к StackPanel и проблема решена. Обязательно добавьте это в раздел ItemTemplate.

Смежные вопросы