2011-12-18 3 views
2

Если у меня есть listbox Item, как я могу получить его index в списке? У меня есть приложение databound, в котором перечислены данные, которые пользователь ранее сохранил. Тем не менее, я хочу, чтобы иметь возможность удалять конкретные данные в списке, используя contextMenu.Как получить индекс элемента в списке

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

ответ

1

Однако, я хочу, чтобы иметь возможность удалять определенные данные в списке, используя ContextMenu.

Вы можете связать элемент непосредственно с ContextMenu как CommandParameter, для команды delete. Это гораздо лучший подход к проблеме.

<ListBox ItemsSource="{Binding UserItems}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <!-- Attach the ContextMenu to the top container in your ItemTemplate. --> 
       <toolkit:ContextMenuService.ContextMenu> 
        <toolkit:ContextMenu> 
         <!-- Here we bind the current item to the RemoveCommand --> 
         <toolkit:MenuItem Command="{Binding RemoveCommand}" 
              CommandParameter="{Binding}" 
              Header="remove item" /> 
        </toolkit:ContextMenu> 
       </toolkit:ContextMenuService.ContextMenu> 
       <!-- The actual DataTemplate --> 
       <TextBlock Text="{Binding SomeValue}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

Я вижу. Однако мне нужен этот элемент, также удаленный из внутреннего хранилища пользователя и для получения точного элемента, мне нужен его номер индекса в массиве. Даже если я удалю элемент на экране таким образом, я не думаю, что это повлияет на локальное хранилище. – deztructicus

+0

Если вы привязываете данные к элементам, вы получите точный элемент, как CommandParameter. Затем вы можете удалить его как из изолированного хранилища, так и из ObservableCollection, отображая элементы в представлении. Номер индекса вам не поможет. –

+0

Ах спасибо. Какую функцию я использую для ее удаления? Я использую ListBoxItem selectedListBoxItem = this.MainListBox.ItemContainerGenerator.ContainerFromItem ((отправитель как MenuItem) .DataContext) как ListBoxItem; Чтобы выбрать элемент, но как его удалить из ObservableCollection? – deztructicus

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