リストボックス内の項目のインデックスを取得する方法

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

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

2

2 答え

なぜ、 SelectedIndexプロパティ(MSDN)?

5
追加された

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

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


    
        
            
                <!-- Attach the ContextMenu to the top container in your ItemTemplate. -->
                
                    
                        <!-- Here we bind the current item to the RemoveCommand -->
                        
                    
                
                <!-- The actual DataTemplate -->
                
            
        
    

1
追加された
項目をデータバインドすると、CommandParameterとして正確な項目が取得されます。その後、隔離されたストレージとビューにアイテムを表示するObservableCollectionの両方から削除できます。インデックス番号はあなたを助けません。
追加された 著者 Claus Jørgensen,
あなたは本当にコマンドバインディングを理解していませんか?あなたは、SilverlightとMVVMのコマンドが一般にどのように動作するかについてお読みになる必要があります。あなたが今やっていることはまったく間違っています。
追加された 著者 Claus Jørgensen,
そうですか。しかし、私はその項目もユーザーの内部ストレージから削除し、正確な項目を取得する必要があります、私は配列内のインデックス番号が必要です。この方法で画面上のアイテムを削除しても、ローカルストレージに影響するとは思わない
追加された 著者 deztructicus,
ありがとう。どの機能を使用して削除しますか?私はListBoxItemを使用していますselectedListBoxItem = this.MainListBox.ItemContainerGenerator.ContainerFromItem((&swn; MenuItemとしてender).DataContext)としてListBoxItem;アイテムを選択するには、アイテムをObservableCollectionから削除する方法はありますか?
追加された 著者 deztructicus,