2011-12-18 4 views
2

listbox Itemがある場合、そのリストのindexを取得するにはどうすればよいですか?私はdataboundアプリケーションを持っていて、ユーザーが以前に保存したデータをリストしています。しかし、contextMenuを使用してリスト内の特定のデータを削除したいと考えています。リストボックス内のアイテムのインデックスを取得する方法

コンテキストメニューを表示するために保持されているアイテムのリストインデックスを取得するにはどうすればよいですか?

答えて

1

ただし、ContextMenuを使用してリスト内の特定のデータを削除したいと考えています。

ContextMenuにアイテムを直接割り当てることができます。削除コマンドの場合はCommandParameterとなります。これは、問題に対するより良いアプローチです。

<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

関連する問題