Я пытаюсь получить добавленный элемент управления пользователя в списке, но не смог найти правильный способ его получить.Как получить элемент управления пользователя в элементе шаблона данных списка
Я использую ниже для поиска пользовательских элементов управления в 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 предмета. Я ищу подходящий способ найти мой пользовательский контроль внутри списка.
Спасибо!
После многого головной боли я нахожу решение здесь (http://stackoverflow.com/questions/9897141/wp7-visualtreehelper-to-loop-through-all-listbox-items) и (http://msdn.microsoft. ком/EN-US/библиотека/окно/приложение/jj709920.aspx) – ARH