1

Есть ли альтернатива ItemContainerGenerator при работе с сгруппированным LongListSelector?Альтернатива ItemContainerGenerator с LongListSelector в WP8?

У меня есть контекстное меню на каждом элементе ListBoxItem. Один из вариантов - «удалить элемент». Это прекрасно работает со следующим кодом (не очень аккуратными, но это работает, более эффективные способы реализации?):

private void deleteItem(object sender, RoutedEventArgs e) 
    { 
     ViewModel drink = (sender as FrameworkElement).DataContext as ViewModel; 
     for (int i = 0; i < LLSGroups.Count; i++) 
      { 
       if (LLSGroups[i].Remove(drink)) 
       break; 
      } 
    } 

Я хотел бы, чтобы оживить этот пункт на удаление. Поэтому мне нужен элемент FrameworkE этого ListBoxItem. С обычной ListBox он работает с

FrameworkElement element = (MyList.ItemContainerGenerator.ContainerFromItem(((MenuItem)sender).DataContext) as ListBoxItem) as FrameworkElement; 

Проблемой: LongListSelectors не реализует ItemContainerGenerator. Как получить элемент FrameworkElement для анимации?

С наилучшими пожеланиями,

Марк

ответ

1

Я строю обходной путь с VisualTreeHelper: Ввод состоит из элемента, который должен быть просмотрел и элемент Я хотел найти.

private FrameworkElement SearchVisualTree(DependencyObject targetElement, DependencyObject comp) 
    { 
     FrameworkElement res = null; 
     var count = VisualTreeHelper.GetChildrenCount(targetElement); 
     if (count == 0) 
      return res; 

     for (int i = 0; i < count; i++) 
     { 
      var child = VisualTreeHelper.GetChild(targetElement, i); 
      if ((child as FrameworkElement).DataContext == (comp as FrameworkElement).DataContext) 
      { 
       res = child as FrameworkElement; 
       return res; 
      } 
      else 
      { 
       res = SearchVisualTree(child, comp); 
       if (res != null) 
        return res; 
      } 
     } 
     return res; 
    } 

вызов выглядит следующим образом:

FrameworkElement element = SearchVisualTree(myList, (sender as FrameworkElement)); 

Это прекрасно работает для манипуляций на visiual элемент списка =)

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

  • Нет связанных вопросов^_^